1.取地址运算:&运算符取得变量的地址 | 您所在的位置:网站首页 › python如何查看变量在内存中的地址数据结构 › 1.取地址运算:&运算符取得变量的地址 |
一、运算符sizeof() c语言给出了一个工具,有一个运算符叫做sizeof(),这个sizeof()可以给出某个类型或变量在内存中所占据的字节数。比如说sizeof(int )告诉你int占据了几个字节;sizeof(a),会告诉你a这个变量了占据几个字节。 我们来试一下sizeof这个事情: #include int main() { int a; a=6; printf("sizeof(int)=%d\n",sizeof(int)); printf("sizeof(a)=%d\n",sizeof(a)); printf("sizeof(double)=%d\n",sizeof(double)); return 0; }运行结果为: 二、运算符& 1.scanf函数里一定要有&符号,如果变量前面不加&符号,程序就会出错。 2.&不能取的地址 scanf(“%d”,&i);里的&,作用是获得变量的地址,它的操作数必须是变量。 &不能对没有地址的东西取地址: &(a+b)?✖&(a++)?✖&(++a)?✖在&右边必须有一个明确的变量,才能去取它的地址。3.为什么变量会有地址?因为c语言的变量是放在内存里面的,每一个变量(上面用sizeof()看过都有相应占据的字节,这些字节在内存中占据一定的地方,它放在某一个地方,它就有一个地址。所以运算符&就是把那个变量的地址拿出来告诉你。 4.那么这个地址会是怎样一个值呢? 我们在64位架构下运行以下代码: #include int main() { int i=0; int p; p=(int)&i; printf("0x%x\n",&i); printf("%p\n",&i); printf("0x%x\n",p); printf("%lu\n",sizeof(int)); printf("%lu\n",sizeof(&i)); return 0; }程序运行会出现warning,[Warning] cast from pointer to integer of different size [-Wpointer-to-int-cast]。 我们先不管这个warning,运行结果如下: 5.再来对&做一些深入研究 (1):取相邻的变量的地址 #include int main() { int i=0; int p; printf("%p\n",&i); printf("%p\n",&p); return 0; }设置两个变量i和p,程序运行结果: 结果如下: |
CopyRight 2018-2019 实验室设备网 版权所有 |