1、取变量的地址
&只对单一变明确的量做,不对算式或者其他东西做
一般采用%p来输出变量的地址,%p的输出形式是十六进制
int i=0;
int p;
p=(int)&i;
//将 &i强制转换成int赋值给p 然后输出
printf("变量i的地址0x%x\n",&i);
//十六进制输出i的地址
printf("变量i的地址%p\n",&i);
//一般采用%p来输出变量地址
printf("变量i的地址0x%x\n",p);
//十六进制输出p
printf("\n");
2、sizeof取地址
变量地址的大小与int的字节在32位架构下相同,但是在64位架构下不同
printf("sizeof取地址%lu\n",sizeof(int));
//变量地址的大小与int的字节在32位架构下相同,但是在64位架构下不同
printf("sizeof取地址%lu\n",sizeof(&i));
printf("\n");
3、相邻变量的地址
m,n输出的字节相差4字节 ,说明在内存里面是紧邻安放
先定义的m在较高的位置后定义的n在较低的位置说明c语言内部存放由高到低
int m=0;
int n;
printf("相邻变量的地址%p\n",&m);
printf("相邻变量的地址%p\n",&n);
printf("\n");
//m,n输出的字节相差4字节 ,说明在内存里面是紧邻安放
//先定义的m在较高的位置后定义的n在较低的位置说明c语言内部存放由高到低
4、数组的地址.
直接拿数组名称当作地址输出可以正常输出
数组中相邻元素(单元)之间的差距是4个字节
int a[10];
printf("数组的地址%p\n",&a);
printf("数组的地址%p\n",a);
//直接拿数组名称当作地址输出可以正常输出
printf("数组元素的地址%p\n",&a[0]);
printf("数组元素的地址%p\n",&a[1]);
//数组中相邻元素(单元)之间的差距是4个字节
printf("数组元素的地址%p\n",&a[2]);
综合代码
#include <stdio.h>
int main()
{
//变量的地址
int i=0;
int p;
p=(int)&i;//将 &i强制转换成int赋值给p 然后输出
printf("变量i的地址0x%x\n",&i);//十六进制输出i的地址
printf("变量i的地址%p\n",&i);//一般采用%p来输出变量地址
printf("变量i的地址0x%x\n",p);//十六进制输出p
printf("\n");
//sizeof取地址
printf("sizeof取地址%lu\n",sizeof(int));
//变量地址的大小与int的字节在32位架构下相同,但是在64位架构下不同
printf("sizeof取地址%lu\n",sizeof(&i));
printf("\n");
//相邻变量的地址
int m=0;
int n;
printf("相邻变量的地址%p\n",&m);
printf("相邻变量的地址%p\n",&n);
printf("\n");
//m,n输出的字节相差4字节 ,说明在内存里面是紧邻安放
//先定义的m在较高的位置后定义的n在较低的位置说明c语言内部存放由高到低
//数组的地址
int a[10];
printf("数组的地址%p\n",&a);
printf("数组的地址%p\n",a);//直接拿数组名称当作地址输出可以正常输出
printf("数组元素的地址%p\n",&a[0]);
printf("数组元素的地址%p\n",&a[1]); //数组中相邻元素(单元)之间的差距是4个字节
printf("数组元素的地址%p\n",&a[2]);
return 0;
}