C语言的一个问题!

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:38:32
#include<stdio.h>
void main(){
int a;
printf("%p\n",&a);
printf("%p\n",&a+1);
}

输出结果是:
0012FF7C
0012FF80

我的问题是"为什么第2个地址不是'0012FF7D' ?"

C里面对内存地址的加操作都是加的是n*sizeof(数据类型),所以这里应该加的是1*sizeof(int),结果自然就是80了.

因为整型的a占了四个字节,内存里一个单元是一个字节的,a+1不是加一个单元,而是加一个整型的值

语法错误,将第一个printf改成scanf,将a+1改成a。

因为你所使用的编译环境规定
整形变量在内存中占4个字节
每个地址之间的差别是4 而非1
所以...

整形占用4字节空间