当前位置:首页 » 编程语言 » c语言中地址一般是固定的吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中地址一般是固定的吗

发布时间: 2023-03-23 06:13:42

‘壹’ c语言中一个常数的地址是一定的吗

这里p的地址和a的地址是不同的,你可以这样理解:

  1. 存储空间可以看成是一间一间的屋子,每个屋子都有自己的编号,变量的值就是货物。

  2. 当你定义a这个变神慎量的时候,如果没有特别指定,那么会随机安排存储空间,打个比方:存储空间1000—1002被用来存储变量a的值,那么1000—1002这几个屋子就被命名为a,而a被赋值的值就是存储在这几个屋子中货物,例如你问题中的19。

  3. p你同样可以看成是一个变量,只是这个变量所对应的屋子不是用来存放19这样的“货物”的。而是存储的放这个货物的“仓库的号此瞎帆码”,就好像是你放了货在1000—1002这几个仓库中,然后将仓库的号码记录在本子上,然后将这个本子放在另一个叫p的仓库中。

  4. 我们叫p这种变量为指针,这就是指针的实际意义。所以p有属于它自己的地址,而它存储着别的变量的地址森雹。这点一定要搞清楚,不然很容易混淆

‘贰’ C语言的内存地址是按什么顺序排列的:比如是按从大到小还是内存自动分配的,请举例

您问的具体是什么?
(1)是地址编号和集成电路里面(用显微镜看)各个单元的位置次序之间的关系?
(2)还是问程序中各个指令代码执行的次序和地址编号之间的关系?
(3)还是问程序中各个变量的次序和地址编号之间的关系?

如果是(1),那么
集成电路里面各个单元的位置次序,一般是不公开的。所以人们不知道它的次序是从左到右还是从右到左还是别的方式。据说,现在的布局大多是交叉分散排列的,因为程序中经常出现连续访问连续地址的操作,如此分散排列,可以使功耗分散,减小局部温升,延长器件寿命。

如果是(2),那么
一般的指令,除了跳转指令和调用、返回指令以外,普通指令都是按照地址连续增加的次序,连续排列的。而且,汇编语言中书写程序清单的次序,除了使用特殊伪指令规定地址(如ORG指令)处以外,都是按照地址编号连续增加的次序书写的。如此,除跳转、调用、返回指令外,书写的次序就是执行的次序。

如果是(3),那么
用汇编语言设计程序时,你可以随自己习惯,觉得怎么安排方便,就怎么安排。
如果是高级语言,那么,不同的编译程序,可以有所不同。
不过,如果是C语言,那么数组内部各个下标变量的地址,必须是按照下标由小到大地址也由小到大的次序连续安排。这是因为,C语言中,对指针的运算有严格规定。
例如p是指向整数的指针,则p+2就应该等于指向p所指的整数变量后面第二个整数变量的指针。于是(p+2)相应的物理地址,就应该等于p相应的物理地址加上2倍int变量的长度。 而对于数组,又是按照指针的概念来规定的。例如:a[2]就和*(a+2)完全等效。

‘叁’ C语言中的变量的内存地址是不是不变的

全局变量和static变量地址不变,在栈上的局部变量或者在堆上面动态分配的都会变化

‘肆’ C语言里面的地址是什么意思,指针指向一个变量的地址

C语言里面的地址实际上就是一个内存单元的编号,计算机一般是以一个字节为最小的存储单元的,每个字节就给它编一个编号,这个编号就是这个字节的地址,这个编号也就是地址是具有唯一性的。指针指向一个变量的地址,这个类似于,通过知道房间号就可以确定这个房间的具体位置是一样的道理,这个房间编号就是房间的地址。

‘伍’ c语言中可以定义固定变量的地址吗

变量就有地址,但是常量不会有地址。
比如
const int * p=&a;
就定义了一个变量指针,指向const int型的变量a

‘陆’ c语言中可以定义固定变量的地址吗万分感谢

不能,在一开始创建的时候计算机就会自动分配给它特定的地址,况且有些地址还是不能访问的。

‘柒’ 请问c语言里常量有固定存储地址吗

这是这样子的陪罩歼,当你定义一个变量a,b以后,这时在内存中就产生了两个地址,再给两个地址存储值,这芦冲个8就是存闷祥储在a,b地址中的值。
8是一个值,如果没有定义在内存中是没有的,当你定义一个变量以后,产生了一个地址,这个地址中存了一个数值8。

‘捌’ C语言,所有变量的逻辑地址都是编译后确定的吗

是的。程序都是在绝敏运行阶段分配内存,所有变量的逻辑地址都是在衡贺编译后就确并拦枝定了,但都是相对的偏移地址,只不过全局变量是相对数据段的偏移,局部变量是相对程序栈顶的偏移。

‘玖’ 请问c语言里常量有固定存储地址吗

int a,b;a=8;b=8;这首先是一个定义变量并给变量赋值,实际上并没有涉及到常量,呵呵,但是它们有不同的地址,因为它们的变量名不同,地址是根据变量名分配地址的,那么常量呢,它也是有地址的,只是和变量存贮的地方不同,但是存储的形式是一样的,就是在内存的地方不同,内存中有专门放常量的,通过存储方法的角度是区分不了变量和常量的,只能通过其存储的值是否变化来区分(以人的角度),和存放的地点不同区分(机器的角度)

‘拾’ c语言每部分内存都有一固定地址吗不能改变

定义一个变量,系统的确会分配一个内存单元A来存储这个变量。而A的固定地址已经是物理地址了。不需要在分配一个来存储该地址。
该变量已经实际存在在内存物理地址上了。