标签:数组元素 小端 c语言 电脑 size amp x11 距离 src
一级指针 :是一个变量,存放内存单元的地址。(存放在指针中的值都被当作地址来处理)
int num = 6;
int* p = #
printf("%p",p);//此时变量p里存放的是num的地址
指针的运算:
指针+-整数:
int n = 10;
char *pc = (char*)&n;
int *pi = &n;
printf("%p\n", &n);//打印变量n的地址
printf("%p\n", pc);//打印变量pc中的内容
printf("%p\n", pc + 1);//pc被强制类型转换成为char型,则+1跳过1个字节
printf("%p\n", pi);//打印变量pi中的内容
printf("%p\n", pi + 1);//pi为int 类型指针,则+1跳过4个字节
//总结:指针的类型决定了指针向前或者向后走一步有多大(距离)。
用指针判断电脑的字节序:
int num = 0x11223344;
char* p = (char*)#
printf("%x",*p);//如果输出是11则为大端字节序,44则为小端字节序。
二级指针:二级指针也是一个变量,只不过它存放的是一个指针的地址。
int a = 10;
int* p = &a;
int** pp = &p;
printf("%p\n",&a);//打印a的地址
printf("%p\n", p);//打印变量p中的值
printf("%p\n", pp);//打印变量pp中的值
指针和数组 :数组名和数组元素的地址是一样的。数组名表示的是数组首元素的地址。
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int *p = arr; //指针存放数组首元素的地址
int sz = sizeof(arr)/sizeof(arr[0]);
for (int i = 0; i < sz; i++)
{
printf("&arr[%d] = %p <====> p+%d = %p\n", i, &arr[i], i, p + i);
}
p+i 其实计算的是数组 arr 下标为i的地址。
指针数组:每一个元素都是指针类型的数组。
int arr[5];
这个数组里存了5个整形类型的指针。
每个元素都是int*
c语言指针总结
标签:数组元素 小端 c语言 电脑 size amp x11 距离 src
原文地址:https://www.cnblogs.com/cuckoo-/p/10425854.html