变量存储的是对应类型的值,是否为地址同样取决于类型。
变量具有不同的类型。
整型变量int,存储的就是一个整数;float类型,存储的是实数;char类型,存储的是字符(实际上也是整数)。
指针变量,是C语言的特殊变量,其存储的是地址。在C语言中,只有指针是用来存储地址值的。
2. C语言,指针变量存在内存的什么地方
C语言中指针变量和普通变量的处理没有任何区别,都是在数据栈中开辟的内存空间,只不过一个存的是内存地址而另一个是存的数据而已.
BTW:一楼不懂无所谓,出来误导人可是你的不对了呵呵,SP是栈指针寄存器,保存的是栈顶指针,和C里面的指针变量没有任何关系.
3. C语言中 局部变量和全局变量都是存储在什么区
C语言中局部变量存在栈里,全局变量存静态存储区。
局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配,但是记得使用完这个堆空间后要释放之。
全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;
(3)变量在内存中的存储地址为扩展阅读
C语言中局部变量和全局变量示例:
#include<stdio.h>
#include<malloc.h>
staticints1=0,s2=0,s3=0;//静态变量放在静态区
intg1=0,g2=0,g3=0;//全局变量放在静态区
voidmain()
{
staticints4=0,s5=0,s6=0;<spanstyle="font-family:Arial,Helvetica,simsun,u5b8bu4f53;"></span>//静态变量
inta1=0,a2=0,a3=0;<spanstyle="font-family:Arial,Helvetica,simsun,u5b8bu4f53;"></span>//局部变量放在栈区
charc1[]="aabb";//局部变量放在栈区
char*c2="aabb";//字符常量放在静态区
char*m1=(char*)malloc(1);//堆区
char*m2=(char*)malloc(1);//堆区
char*m3=(char*)malloc(1);//堆区
printf("动态数据区 ");
printf("a1 a2 a3 ",&a1,&a2,&a3);
printf("c1 ",c1);
printf("m1 m2 m3 ",&m1,&m2,&m3);
printf("静态数据区 ");
printf("s1 s2 s3 ",&s1,&s2,&s3);
printf("g1 g2 g3 ",&g1,&g2,&g3);
printf("s4 s5 s6 ",&s4,&s5,&s6);
printf("c2 ",c2);
}
4. C语言中,将一个变量的地址称为,存放变量地址的变量称为
存放地址的变量是指针变量,变量的地址称为内存的地址,是指针存储的值,C语言中指针和数组哼难理解,同时还有二级指针,存放的是指针变量的地址,数组名是常指针,不能做左值,作为右值是代表的是数组首竖兄简元素的地址,&数组名,才是数组的地址,尽管值是相同的,但是意义不一样,就像中央政府在北京,北京市政府也在北京,虽然是同一个地方,但是代表的不同,中央政府代尘圆表的是中国,北京市政府代表的是北京,意义与余裤重量级都不同。
5. C语言中全局变量存放在内存空间中那个位置
在 C 语言中,内存分配方式有以下三种形式:
1、从静态存储区域分配
由编译器自动分配和释放,在程序编译的时候就已经分配好内存,这块内存在程序的整个运行期间都存在,直到整个程序运行结束时才被释放,如全局变量与 static 变量。
2、在栈上分配
同样由编译器自动分配和释放,在函数执行时,函数内部的局部变量都可以在栈上创建,函数执行结束时,这些存储单元将则被自动释放。
需要注意的是,栈内存分配运算内置于处理器的指令集中,它的运行效率一般很高,但是分配的内存容量有限。
3、从堆上分配
也称为动态内存分配,由程序员手动完成申请和释放。程序在运行的时,由程序员使用内存分配函数(如 malloc 函数)来申请内存,使用完之后再由程序员自己负责使用内存释放函数(如 free 函数)来释放内存。
需要注意的是,如果在堆上分配了内存空间,就必须及时释放它,否则将会导致运行的程序出现内存泄漏等错误。
在 C 语言中,不同类型变量的存储位置和作用域也有所不同。
全局变量
从静态存储区域分配,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用。如果程序是由多个源文件构成的,那么全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,但必须在其他文件中通过使用extern关键字来声明该全局变量。
全局静态变量
从静态存储区域分配,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用。与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用。
局部变量
从栈上分配,其作用域只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,也即该变量的生命周期和该函数同在。
局部静态变量
从静态存储区域分配,其在第一次初始化后就一直存在直到程序结束。该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。
6. c语言中是变量存储地址还是地址存储变量啊
变量在内存中存储
每个内存位置都有一个编号,就是内存地址值
地址值,就是个整数,所以,也可以存储到变量中,C中的指针变量,就是专门用来存储地址的变量
。
7. C语言中全局变量存放在内存空间中那个位置
全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放。
用户存储空间可以分为三个部分:
1)程序区;
2)静态存储区;(是指在程序运行期间分配固定的存储空间的方式。)
3)动态存储区;(是在程序运行期间根据需要进行动态的分配存储空间的方式。)
8. 变量在内存中的存储方式
a被定义为共用体
也就是说它采用了覆盖存储
意思是各个成员(你程序中的i,c1)是从一个存储区迹誉搜域开始的
共用体的容量就是成员中最大的容量
你程序中的i是整型虚冲的占16位的存储空间,char只占8位因此定义共用体的a只占16位存储空间。赋值时0x12345678前四位溢出
也就是说a中的内容实际是5678
地址从低位到高位存储的内容为8765
当输出a.c1时由于是char型只输出姿历两位即78
printf不是一个字节一个字节的输出而是整体输出因此不是87而是78
9. 语句"int a;"定义的变量a存储在内存的什么存储区
要看a是写在程序中的哪一个位置,如果是局部变量(例:函数体内),那么存放在栈区;全局变量一般存放在静态区。
在C++中,内存分成5个区,他们分别是 堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆, 操作系统层面的术语。就是那些由malloc等分配的内存块,用free来结束自己的生命的。
(9)变量在内存中的存储地址为扩展阅读:
由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。
10. C语言变量存储在内存(memory)中的什么地方
c语言中数据存储分为以下几个部分,每个部分存储不同的内容:
1、栈区:存放函数的参数值,局部变量的值等。
2、堆区 :存储动态生成的对象,一般由程序员分配释放。
3、静态区或者全局区: 存储全局变量和静态变量。
4、文字常量区 :存储常量字符串。
5、代码区 : 存储函数体的2进制代码。