您的位置:首页 > 其它

指针数组和数组指针

2016-03-16 14:43 176 查看
先看一个例子吧:

int main()
{
char *arr[2] = {"one","two"};
printf("arr[0] = %s\n",arr[0]);
printf("*(arr+0) = %s\n",*arr);
printf("arr[1] = %s\n",arr[1]);
printf("*(arr+1) = %s\n",*(arr+1));

char* (*p)[2] = &arr;//one pointer.and it pointer to an array which have two elements(char *)
printf("address of arr is 0x%x\n",arr);
printf("address of p is 0x%x\n",p);
printf("address of p+1 is 0x%x\n",p+1);//add 8

char **pa = arr;
printf("%s\t",*(pa++)+1);//*pa+1 ne
printf("%c\n",**pa-1);//**pa=t, -1 is s
system("pause");
return 0;
}

1. char *arr[2]  没有括号,是一个指针数组,即一个名叫arr的数组,里面有两个元素,元素的类型是char *类型的,即字符指针类型。

2. char* (*p)[2] 有括号,是一个数组指针,一个名为p的指针,指向一个有两个元素的数组,数组的元素类型是char*型的。

3. 数组本来就是一重指针,加上里面存储的字符指针类型,要取到字符就必须用**了,于是有了char **pa=arr;

来看一下输出结果:



 一起努力,共同进步。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针