精华内容
下载资源
问答
  • 这句话是错误的,因为一个函数内部可以有多个复合语句。 举个栗子: void main(void) { // 复合语句1 { // 复合语句2 int a = 10; } printf("%d\n",a);...这说明在复合语句(代码块)中定义变量...

    这句话是错误的,因为一个函数内部可以有多个复合语句。
    举个栗子:

    void main(void)
    {	// 复合语句1
    	{	// 复合语句2
    		int a = 10;
    	}
    	printf("%d\n",a);
    }```
    编译后报错:[Error] 'a' undeclared (first use in this function)(变量a未声明)
    这说明在复合语句(代码块)中定义的变量,不可以在复合语句之外使用。
    (第一次用这玩意,排版就这样吧,懒得折腾了)
    
    展开全文
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ... 多个语句用括号{}括起来组成的一个语句称复合语句。...程序应把复合语句看成是单条语句,而不是多条语句。 如: {   

    多个语句用括号{}括起来组成的一个语句称复合语句。 

    在程序中应把复合语句看成是单条语句,而不是多条语句。
    如:

    {  

         x=y+z;  

         a=b+c;  

         printf("%d%d",x,a);  

    }  

    是一条复合语句。

    复合语句内的各条语句都必须以分号“;”结尾;此外,在括号“}”外不能加分号。



    定义变量可能有三种情况: 

    (1)在函数的开头定义;

    (2)在函数内的复合语句内定义.;

    (3)在函数的外部定义.;

           在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的.在复合语句内定义的变量只在本复合语句范围内有效,只有在本复合语句内才能引用它们.在该复合语句以外是不能使用这些变量的.以上这些成为"局部变量".

           程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数.在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局变量(也称全程变量).全局变量可以为本文件中其他函数所共用.它的有效范围为从定义变量的位置开始到本源文件结束.

    <script type="text/javascript" id="wumiiRelatedItems"> </script>
     
    展开全文
  • C语言复合语句

    千次阅读 2020-02-13 23:07:02
    复合语句内的变量定义是独立的,即复合语句定义变量不影响复合语句外的同一个标识符的变量,且复合语句定义变量不能供复合语句外调用,只能在复合语句外单独定义,单独使用。 但是复合语句定义变量可以...

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    复合语句内的变量定义是独立的,即复合语句内定义的变量不影响复合语句外的同一个标识符的变量,且复合语句内定义的变量不能供复合语句外调用,只能在复合语句外单独定义,单独使用。
    但是复合语句外定义的变量可以供复合语句内调用是没有问题的。复合语句内可以定义与复合语句外同一标识符的变量,且不影响,复合语句外变量的值。

    展开全文
  • c语言之函数中变量

    千次阅读 2020-05-29 17:18:40
    一、局部变量与全局变量 ... 一个函数内部,在复合语句(块)中定义变量,这些变量只复合语句中有效。 如果局部变量的有效范围重叠,则有效范围小的优先。 #include "stdio.h" void main() { int i=2,j=3,k;

    一、局部变量与全局变量

    1.1、局部变量

    函数内部或块内定义的变量。

    1.2、局部变量的作用域(作用范围)

    • 主函数中定义的变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系。
    • 不同的函数中可以使用相同的变量名,因为它们代表不同的变量,它们之间互不干扰。
    • 在一个函数内部,在复合语句(块)中定义变量,这些变量只在本复合语句中有效。
    • 如果局部变量的有效范围重叠,则有效范围小的优先。
    #include "stdio.h"
    void main()
    {
    int i=2,j=3,k;
    k=j+i;
    
    {
    int h=8;
    printf("%d\n",h);
    
    }
    printf("%d\n",k);
    }

     

     

    1.3、全局变量

    在函数外面定义的变量为全局变量

    1.4、全局变量的作用域

    全局变量为文本中的其他函数共有,它的有效范围是从定义点开始,直到源文件结束,全局变量又称为外部变量。

    /*打印10个100~200之间的随机数并输出最大和最小数*/
    #include "stdio.h"
    #include "math.h"
    #include "stdlib.h"
    int min;  // 全局变量
    int fid()
    {
        int max,r,i;  // max局部变量
    	r=rand()%101+100;
    	//printf(" %d",r);
    	max=r;min=r;
    	for(i=1;i<10;i++){
    		r=rand()%101+100;   // 产生100 ~200之间的随机数
    	if(r>max)
    		max=r;
    	if(r<min)
    		min=r;
    
    	printf("%d\t",r);
    	}
    	return max;
    
    }
    void main()
    {
      int m = fid();
      printf("\n最大数:%d\n,最小数:%d\n",m,min);
    }

    /*局部变量与全局变量同名案例
    当局部变量与全局变量同名,在局部变量的作用范围内,全局变量不起作用,局部变量优先
    */
    #include "stdio.h"
    //#include "math.h"
    //#include "stdlib.h"
    int a=3,b=5;        // 全局变量 a,b
    int max(int a, int b)  // 局部变量 a,b
    {
    int c;
    c=a>b?a:b;
    return c;
    }
    void main()
    {
    int a=8;   // 局部变量a
    printf("%d\n",max(a,b));
    }
    
    /*
    不建议使用全局变量的原因:
    为了方便区别全局变量和局部变量,将局部变量的第一个字母用大写表示
    
    1、全局变量在程序的全部执行过程中都占用存储单元,而不是在需要时才开辟单元。
    2、它使等函数的通用性降低。
    3、全局变量过多,会降低程序的清晰性
    
    
    
    
    
    */

    1.5、全局变量的注意事项

    为了方便区别全局变量和局部变量,将局部变量的第一个字母用大写表示

    1、全局变量在程序的全部执行过程中都占用存储单元,而不是在需要时才开辟单元。
    2、它使等函数的通用性降低。
    3、全局变量过多,会降低程序的清晰性

    二、变量的存储类别

    按变量的存在时间(生命周期)来划分,可以分为静态存储变量和动态存储变量。

    动态存储变量(这时一种节省内存空间的存储方式):当程序运行进入定义它的函数或复合语句时才被分配存储空间;程序运行结束离开此函数或复合语句时,释放动态动态存储变量所占用的空间。

    静态存储变量:在程序运行的整个过程中,始终占用固定的内存空间,直到程序运行结束,才释放占用的内存空间。静态存储类别的变量被放于内在空间的静态存取区域

    c程序运行时,占用三部分的内存空间

    • 程序运行时数据分别存储在静态存储区动态存储区
    • 静态存储区用来存放程序运行周期内所占用固定存储单元的变量,如全局变量;
    • 动态存储区用来存放不需要长期占用内存的变量,如函数的形参等;
    • 变量的存储类别有四种:自动类型(auto),寄存器类型(register),静态类型(static)外部类型(extern)
    • 动态变量:自动类型、寄存器类型
    • 静态变量:静态类型,外部类型

    2.1、自动类型变量(auto)

    用关键字auto说明变量是自动类型变量


    格式:
    auto 类型  变量名;

     自动类型变量属于动态局部变量,存储在动态存储区,定义时可以加auto也可以不加,由此可知局部变量都是自动类型变量
     自动类型的分配和释放存储空间的工作是由编译系统自动处理

    int function1(int a)
    {
    auto int b,c=3;
    /*形参a,变量b,c都是自动类型变量
    在调用该函数时,系统给它们分配存储空间调用结束时自动释放存储空间*/
    }

    2.3、寄存器类型变量(register)

    用关键字register说明变量是寄存器类型
    格式:
    register 类型  变量名;
    register int a;

    寄存器变量是动态局部变量,存放于CPU的寄存器或动态存储区中,以提高存取速度,寄存器的存取速度比内存快。
    该类变量的作用域、生存期与自动类型变量相同;如果没有存放在通用寄存器中,按自动类型变量处理


    计数机中寄存器个数是有限的,使用register的注意事项

    • 寄存器类型变量不宜过多,一般将频繁使用的变量放在寄存器中(循环涉及的内部变量),以提高程序执行的速度
    • 变量的长度应该与常用寄存器的长度相当,一般为int型或char型。
    • 寄存器变量的定义通常是不必要的,当今优化的编译系统能够识别频繁使用的变量,并能够在不需要编译人员说明变量是register的时候,把频繁使用的变量放到寄存器中。
    
    #include "stdio.h"
    //#include "math.h"
    //#include "stdlib.h"
    void main()
    {
    
    	int x=5,y=10,k;     // 自动类型变量
    	for(k=1;k<=2;k++)
    	{
    	register int m=0,n=0;
    	m=m+1;
    	n=n+y;
    	printf("m=%d\t=%d\n",m,n);
    	}
    }
    
    /*
    用关键字register说明变量是寄存器类型
    格式:
    register 类型  变量名;
    register int a;
    
    寄存器变量是动态局部变量,存放于CPU的寄存器或动态存储区中,以提高存取速度,寄存器的存取速度比内存快。
    该类变量的作用域、生存期与自动类型变量相同;如果没有存放在通用寄存器中,按自动类型变量处理
    
    
      计数机中寄存器个数是有限的,使用register的注意事项
      1、寄存器类型变量不宜过多,一般将频繁使用的变量放在寄存器中(循环涉及的内部变量),以提高程序执行的速度
       2、变量的长度应该与常用寄存器的长度相当,一般为int型或char型。
     
    
    
    */

    2.4、静态变量(static)

    • 静态类型的变量占用静态存储区,用static关键字来说明
    • static  类型  变量名;
    • static int a;
    • 静态变量=静态局部变量+静态全局变量
    • c语言规定了静态局部变量(静态全局变量)有默认值:
    • int类型等于0
    • float型等于0.0
    • 自动变量和寄存器变量没有默认值,值为随机数
    • char型为'\0'

    静态局部变量

    静态局部变量是存储在静态存储区的,所以在整个程序开始的时候就被分配固定的存储单元,整个程序运行期间内不再被重新分配,故其生存期是整个程序的运行期间。

    静态局部变量本身也是局部变量,具有局部变量的性质,即其作用域是局限在定义它的本函数内的,如果离开了定义它的函数,该变量就不再起作用,但其值任在,因为存储空间并未释放。

    静态局部变量赋初值的时间是编译阶段,并且只被初值一次,即使它所有的函数调用结束,也不释放存储单元,因此不管调用多少此该静态局部变量的函数,它任保留上一次调用函数时的值。

    2.5、外部变量

    • 定义在任何函数之外的变量都叫做外部变量。外部变量通常用关键字extern说明。
    • 一般形式:  extern  类型  变量名;
    • extern  int a;
    • extern double k;

        
        一个文件中定义的全局变量默认为外部的,即extern关键字可以省略。但是如果其他文件要使用这个文件中定义的全局变量,则必须在使用前用extern作为外部声明,外部声明通常放在文件的开头

    三、案例

    #include <stdio.h>
    extern int days();
    extern int year,month,day;
    void main(){
    printf("输入年,月,日:\n");
    scanf("%d%d%d",&year,&month,&day);
    printf("%d月%d日是%d年的第%d\n",month,day,year,days());
    }
    int year,month,day;
    int days()
    {
    
    int i,count=0;
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if((year%100)&&!(year%4)||!(year%400))
    a[2]=20;
    for(i=0;i<month;i++)
    count+=a[i];
    count=count+day;
    return count;
    }
    
    

     

    展开全文
  • 一、变量按作用域范围...(4)在复合语句中也可以定义变量,但其作用域只能在复合语句内。 全局变量:在函数外定义的变量,它的作用域是从变量定义开始,到程序文件的末尾。如果定义点前的函数要使用该外部变量,要
  • 一般定义在函数复合语句的开头,生存周期为定义直到所在函数复合语句调用结束,作用范围为所在函数复合语句 3(局部)静态变量 与局部变量类似,只不过其生存周期为定义开始直到程序运行结束。其赋初值只会...
  • 局部变量(内部变量):在定义它的函数内有效,但是函数返回后失效; 全局变量(外部变量):所有源文件内均有效。同源文件的函数中使用使用全局变量,需要将全局变量提前声明;同时不包含全局变量定义的不...
  • 语句定义和用法

    2017-08-04 17:16:09
    定义语句 变量定义语句 类型定义语句 声明语句 函数声明语句 变量声明语句 基本功能语句 表达式语句表达式后边跟一个分号所构成的语句。 空语句语句是仅由一个分号表示的语句。其格式为: ;  ...
  • 说明语句:用于定义变量、声明函数原型的语句。2. 表达式语句:即表达式之后加分号。3. 函数调用语句:即函数调用之后加分号。4. 空语句:即只有一个分号。(这个一般用不到)5. 控制语句:是用于控制程序执行流程的...
  • 一、变量定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能begin…end 块使用,变量必须定义在复合语句的开头,并且是其它语句之前,也可以同时申明多个变量,如果需要,可以使用default...
  • 局部变量 一个函数内部定义的变量是内部变量,它只函数范围内有效,也就是说只有函数内才能使用...例如,f1函数中定义了变量b和c,倘若f2函数中定义变量b和c,它们内存占不同的单元,不会混淆。
  • C语言,我们知道放在函数中的普通变量的值只能通过return语句返回值,但是如果只是把复合语句放在主函数,则复合语句中变量定义又该如何呢?我们来看下边一个例子: #include <conio.h> #include &...
  • 有些书讲局部变量的作用域是在函数中在函数调用时全部入栈,其实这种理解只c89的标准下是对的,c99局部变量是可以在函数的任何地方声明的,他的左右域也可是复合语句 ,  下面我们就来了解一下,复合语句...
  • 局部变量 :  一个函数内部定义的变量是局部变量,它只函数范围内有效,也就是说只有函数内才能使 ... (3) 一个函数内部,可以再复合语句中定义变量,这些变量仅复合语句中有效,
  • 局部变量与全局变量

    2019-04-19 19:36:34
    2.在函数内的复合语句定义; 3.在函数外部定义; 一、局部变量函数定义变量是局部变量一个函数内部定义变量函数范围内有效,只有函数内才能引用,函数以外不能使用这些变量在复合...
  • C++ 7.1 函数定义

    2015-05-20 14:09:59
    在函数中定义变量函数中才可以访问,这种变量称为局部变量,这种变量在函数运行时才存在; 执行return 语句后,被挂起的主调函数在调用处恢复执行,并将函数的返回值用作求解调用操作符的结果,继续处理...
  • MySQL自定义函数用法详解-复合结构自定义变量/流程控制 自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL。 所以UDF是对MySQL功能的一个...
  • 1.函数定义 参考博客:http://www.runoob.com/cplusplus/cpp-functions.html (1)函数的分类 a. 系统函数(库函数):库函数是由头文件声明的,用户不需要自己声明,因此程序开头需要用#include指令所包含...
  • 数据库的操作编写sql语句的时候,我们可能会用到函数以及触发器等的操作来简化我们的工作。 这片文章,也和我以前的博文一样,不是纯粹的理论讲解,而是采用的是案例的方式进行笔记的记录说明。还是...
  • c语言的局部变量与全局变量

    千次阅读 2016-11-03 16:44:36
    我们知道函数中的形参变量只有被调用的时候才分配内存单元,调用结束立即释放。这说明形参变量只有在函数内部才有效,离开函数就...如果变量在某个复合语句定义变量具有从定义位置开始到复合语句结束为止的局部作用
  • 局部变量在函数的开头定义在函数内的符合语句内定义作用范围包含该局部变量的函数内有效一个函数内部,可以复合函数语句中定义变量,这些变量只复合语句中有效,这种符合语句称为分程序或程序块 #include<...
  • 局部变量&全局变量

    2019-11-28 22:45:40
    一个函数内部,可以在复合语句中定义变量,这些变量只复合语句中有效 全局变量 全局变量可以为本文件内其他函数所共用,作用范围:从定义变量的位置到本源文件结束,这样来看,同一源文件内变量定义越早,...
  • 一、函数 声明方式: 1)变量声明: var foo = function () { .... } ...2)函数声明: ...函数参数:都是按值传递(把函数外部的值复制给函数内部的参数) ...而变量复制则有两种方式...函数要用到的中间变量尽量...
  • 局部变量一个函数中复合语句中定义变量,存储。局部变量在动态存储区分配存储单元,调用时动态分配,在函数复合语句结束时自动释放。 静态局部变量一个函数中定义局部变量时,若加上static...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,994
精华内容 20,797
关键字:

在函数的复合语句中定义变量