标签:
有了前面 两篇 基础,下面我们可以更深入的来介绍c/c++(疑3) C语言指针数组和数组指针
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。
int _tmain(int argc, _TCHAR* argv[]) { int a[4]={1,2,3,4}; int *ptr0 = (int*)(int)a;//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 cc cc cc int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1);//00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 cc cc cc cc int *ptr3 = (int *)((int)a+2);//00 00 02 00 00 00 03 00 00 00 04 00 00 00 cc cc cc cc 3c int *ptr4 = (int *)((int)a+3);//00 02 00 00 00 03 00 00 00 04 00 00 00 cc cc cc cc 3c d2 int *ptr5 = (int *)((int)a+4);//02 00 00 00 03 00 00 00 04 00 00 00 cc cc cc cc 3c d2 d8
<span style="white-space:pre"> <span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 22.399999618530273px; background-color: rgb(238, 238, 238);">int *ptr=(int *)(&a+1);</span><br style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 22.399999618530273px; background-color: rgb(238, 238, 238);" /><span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 22.399999618530273px; background-color: rgb(238, 238, 238);"> <span style="white-space:pre"> </span>printf("%d,%d",*(a+1),*(ptr-1));</span></span> //printf("%x,%x,%x,%x,%x,%x",ptr1[-1],*ptr2,*ptr3,*ptr4,*ptr5); 下一篇文章讲解 getchar(); /* a 0x00C4F810 &a[0] 0x00C4F810 &a 0x00C4F810 */ return 0; }上面的注释是我通过查看内存 和 汇编 的一些注释,也保留下来了,可能每台机器不一样,所以地址也不一样。
//printf("%x,%x,%x,%x,%x,%x",ptr1[-1],*ptr2,*ptr3,*ptr4,*ptr5); 下一篇文章讲解
这个相对来说 稍有复杂,设计到内存 和 大小端
标签:
原文地址:http://blog.csdn.net/u010236550/article/details/44927383