指针数组和数组指针
2016-03-16 14:43
176 查看
先看一个例子吧:
1. char *arr[2] 没有括号,是一个指针数组,即一个名叫arr的数组,里面有两个元素,元素的类型是char *类型的,即字符指针类型。
2. char* (*p)[2] 有括号,是一个数组指针,一个名为p的指针,指向一个有两个元素的数组,数组的元素类型是char*型的。
3. 数组本来就是一重指针,加上里面存储的字符指针类型,要取到字符就必须用**了,于是有了char **pa=arr;
来看一下输出结果:
一起努力,共同进步。
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;
来看一下输出结果:
一起努力,共同进步。
相关文章推荐
- 关于指针的一些事情
- C# Pointer指针应用实例简述
- C++智能指针实例详解
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- C++编程指向成员的指针以及this指针的基本使用指南
- 详解C++中的指针、数组指针与函数指针
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析
- C#通过指针实现快速拷贝的方法
- php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
- C#通过指针读取文件的方法
- C语言指针学习经验总结浅谈
- C++交换指针实例
- C/C++中指针和引用之相关问题深入研究
- 讲解C语言编程中指针赋值的入门实例