c语言指针总结

Posted cuckoo-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言指针总结相关的知识,希望对你有一定的参考价值。

 一级指针 :是一个变量,存放内存单元的地址。(存放在指针中的值都被当作地址来处理)
 int num = 6;
 int* p = #
 printf("%p",p);//此时变量p里存放的是num的地址
指针的运算:
  指针+-整数:
   int n = 10;   
   char *pc = (char*)&n;   
   int *pi = &n;
   printf("%p ", &n);//打印变量n的地址   
   printf("%p ", pc);//打印变量pc中的内容   
   printf("%p ", pc + 1);//pc被强制类型转换成为char型,则+1跳过1个字节
   printf("%p ", pi);//打印变量pi中的内容
   printf("%p ", 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 ",&a);//打印a的地址
 printf("%p ", p);//打印变量p中的值
 printf("%p ", 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 ", i, &arr[i], i, p + i);
 }
 技术图片
 p+i 其实计算的是数组 arr 下标为i的地址。
 
指针数组:每一个元素都是指针类型的数组。
int arr[5];
这个数组里存了5个整形类型的指针。
每个元素都是int* 


























以上是关于c语言指针总结的主要内容,如果未能解决你的问题,请参考以下文章

C语言总结1(指针)

C语言指针总结,值得收藏哦

C语言指针总结

C语言指针总结大学霸IT达人

C语言指针总结大学霸IT达人

C语言指针总结大学霸IT达人