第八周:指针与字符串---1-指针A
视频1:取地址运算,&运算符取得变量的地址
#include<stdio.h> int main() { int a; a = 6; printf("sizeof(int)=%ld\n",sizeof(int)); printf("sizeof(a)=%ld\n",sizeof(a)); printf("sizeof(double)=%ld\n",sizeof(double)); return 0; }
#include<stdio.h> int main(void) { int i = 0; printf("0x%x\n",&i); return 0; }
warning想说的是输出地址不应该用%x,而应该用%p
#include<stdio.h> int main(void) { int i = 0; printf("%p\n",&i); return 0; }
//以32位架构编译的结果 #include<stdio.h> int main(void) { int i = 0; int p; p = (int)&i; //强制类型转换 printf("0x%x\n",p); printf("%p\n",&i); return 0; }
//以64位架构编译的结果 #include<stdio.h> int main(void) { int i = 0; int p; p = (int)&i; //强制类型转换 printf("0x%x\n",p); printf("%p\n",&i); return 0; }
以64位架构编译的结果
以32位架构编译的结果
& 不能对没有地址的东西取地址 &(a+b)? X &(a++)? X &(++a)? X
#include<stdio.h> int main(void) { int i = 0; int p; printf("%p\n",&i); printf("%p\n",&p); return 0; }
//以 32 位架构编译的结果 //首先 6c 和 68 相差多少 //这是 16 进制,所以 c 相当于 10 进制的 12 //12 - 8 = 4 //int -> 4
#include<stdio.h> int main(void) { int a[10]; printf("%p\n",&a); printf("%p\n",a); printf("%p\n",&a[0]); printf("%p\n",&a[1]); return 0; }