码迷,mamicode.com
首页 > 编程语言 > 详细

c语言指针总结

时间:2019-02-24 13:37:07      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:数组元素   小端   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!