A. 当变量的存储类型定义缺省时,系统默认为变量的存储类型为 c语言
当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区.
B. 局部变量的储存类别是什么变量,静态局部变量和寄存器变量
C语言存储类型有四种,分别是auto, extern, register, static。
1、局部变量,在没有任何修饰的情况下,存储类型为auto。
即定义局部变量int a;和auto int a;是相同的。
auto为缺省类型。
2、静态局部变量。
静态局部变量是指有static修饰的局部变量,比如
static int a;
其存储类型为static。
3、寄存器变量。
是指用register修饰的变量,比如:
register int a;
其存储类型为register。
C. c语言的auto和static类型变量
auto型变量在函数被调用时,系统为其分配存储空间。auto型变量存储在内存的动态存储区,函数执行后释放存储空间。只有函数的局部变量才能定义为auto类型。在定义局部变量时,如果缺省存储类型,则系统将变量当做auto型处理,即默认为auto型变量。
static型变量存放在内存的静态存储区,在编译时为其分配存储空间并初始化。若没有赋值,则默认为0。在函数内定义的静态变量为静态局部变量,在函数外定义的静态变量为静态全局变量。static型局部变量不因函数结束而消失,当再次进入函数时,变量是上一次函数运行结束后的值。无论什么情况下,都不能被其它函数情况下调用。
D. c语言中局部变量缺省的存储类型是什么
应该是 auto 自动变量。
局部变量缺省是 自动变量
作用文件部位的缺省是 静态变量
E. c语言中,局部变量默认的存储类型是
应该是auto自动变量。
局部变量缺省是自动变量auto,作用文件部位的缺省是静态变量static
F. 指针作参数不会改变指针的地址
当然会输出a了。
--------------------------------------------------
你自定义的函数Point(char *p){p+=3} 中的形式参数p与main()中的定义的变量char *p虽然是同样类型同样名称的变量,但两者是截然不同的,它们都是局部变量,只在定义自己的函数中有效。其实变量除了有类型之分,如int ,char ,float之分以外,还有作用域的分别。
point函数中的p在执行完之后,就会释放存储空间,它是自动类型的变量,它仅在调用它的时候才为其分配存储空间,并且只在定义它的函数内有效,当函数调用结束后,变量空间被释放。main函数中的p也是自动变量,但是它的作用范围在整个main函数内,printf的函数调用的时候就是输出它的值。
关于变量的存储类型和作用域的资料总结如下:
-------------------------------------------------
C语言变量的存储类型有如下四种:
自动型(auto);
静态型(static);
外部行(extern);
寄存器型(register);
另外,对变量的作用范围(即作用域),还有一个规定,也就是说变量定义好之后。按照变量分为局部变量和全局变量。局部变量的作用域仅在该变量的函数内有效,其他位置不能访问它;全局变量说明该变量在定义位置起到整个源程序结束的范围内的各个函数都可以访问。
【1】局部变量的存储类型有3种:自动变量,静态局部变量和寄存器变量。
1自动变量:在函数的内部或复合语句中定义的变量以及型参,如果不专门指定其存储类型,都是自动地分配存储空间。自动变量为缺省类型,我们用到的大部分局部变量都是没有声明存储类型,实际上都是自动类型的变量(auto)
2静态局部变量:
如果希望在函数调用结束后仍然保留函数中定义的局部变量的值,即其占用的存储单元不释放,在下一次调用该函数时,改变量能够保持连续性,则需要将该局部变量定义为静态局部变量,用关键字static进行声明。
一般形式:static 类型说明符 变量名表;
3寄存器变量:
一般情况下,变量的值都是存放在内存中的。为了提高程序的运行速度,可将使用十分频繁的局部变量声明为寄存器变量用关键字register。在每一种计算机的cpu内都包含若干个通用寄存器,由于cpu对寄存器中数据的存取速度要远远快于内存中数据的存取速度,所以c语言特别引入了寄存器变量。
注意的几点:(1) 寄存器变量是局部变量,它的生命周期和自动变量一样。(2)只能将自动变量和形式参数定义为寄存器变量,而静态局部变量不可以定义为寄存器变量,因为一个变量不能既放在静态存储区又放在寄存器中。(3)一般数据类型为long double float 的变量不能定义为寄存器类型,因为这些数据的长度超过了寄存器本身的长度。通常寄存器是16位的。
【2】全局变量及其存储类型
前面讲到在函数内部定义的变量称为局部变量,那么在函数外部定义的变量就称为全局变量,它的有效范围是从定义变量的位置开始到本源程序结束。
全局变量的存储类型有两种:外部变量和静态变量。
(1)外部变量
没有说明为static 的全局变量,其存储类型都是外部的,统称为外部变量,编译时将外部变量分配在静态存储区中。
一般形式:extern 类型说明符 变量名表;
其中extern可以省略,是一种缺省格式。当我们定义了外部变量之后,随后该程序的所有函数都可以对它们进行存期和修改。外部变量的值是永久保留的,存放在用户的静态存储区中,这与自动变量截然不同。
(2)静态外部变量
如果希望一个源程序文件中定义的全局变量只在本源程序文件内有效,而其他的源程序文件不允许访问,则可以在定义全局变量的时候加上关键字 static
一般形式: static 类型说明符 变量名表;
说明:(1)静态全局变量的定义仍然是在函数的外部,作用域为定义它的源程序文件。由此提供了把数据隐藏起来的一种手段,使得外部源程序文件不能访问。
(2)静态全局变量与其他源程序文件的同名变量互不相干,避免了不同源程序文件中同名全局变量的冲突。
G. c语言中,局部变量默认的存储类型是
存储类型是自动类型 外部、静态和寄存器类型都需要声明的 默认的就是自动类型