第八周:指针与字符串---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;
}