博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针数组和数组指针
阅读量:7172 次
发布时间:2019-06-29

本文共 1975 字,大约阅读时间需要 6 分钟。

hot3.png

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针:a pointer to an array,即指向数组的指针,也称为行指针,返回值为指针。

 

指针数组:

#include 
#include
int main(){ //char *str[3] = {"Hello", "I'm ok", "Well"}; char animal[20] = "you are a bear"; char *str[3]; str[0] = new char[20]; str[1] = new char[20]; str[2] = new char[20]; strcpy(str[0], "hello"); strcpy(str[1], "I'm a good boy"); strcpy(str[2], "ok"); std::cout << str << std::endl; std::cout << &str[0] << std::endl; std::cout << str[0] << std::endl; std::cout << str[1] << std::endl; std::cout << str[2] << std::endl; std::cout << animal << std::endl; delete [] str[0]; delete [] str[1]; delete [] str[2]; return 0;}

运行结果:

173943_o5jW_2326611.png

 

 

数组指针:

int main(){        int a[2][2]={1,2,3,4};//这是一个2*2的二维数组          int (*p)[2];//数组指针          p=a;//令p指向数组a          std::cout << *p[0] << std::endl;        std::cout << *(p[0]+1) << std::endl;        std::cout << *p[1] << std::endl;        std::cout << *(p[1]+1) << std::endl;}

运行结果:

174227_XvfV_2326611.png

分析:

a是一个数组名,类型是指向一维数组的指针,不是变量,a的值是指针常量,即不能有a++或者a=p这些操作。a指向这块连续空间的首地址,是&a[0][0]。

a[0]是一维数组名,类型是指向整型的指针,是&a[0][0],这个值是一个常量。

a[1]是一维数组名,类型是指向整型的指针,是&a[1][0],这个值是一个常量。

p是一个数组指针变量,指向一维数组的指针变量是&a[0][0]。可以执行p++;p=a等操作。

虽然a跟a[0]值是一样,但类型不一样,表示的意义不一样。通过分析就不难理解为什么*(*(a+i)+j)和a[i][j]等效了。

 

指针数组和数组指针示例:

int main(){        int a[2][2]={1,2,3,4};//这是一个2*2的二维数组          int (*p)[2];//数组指针          int *q[2];//指针数组          p = a;      //令p指向数组a          q[0] = a[0];        q[1] = a[1];        std::cout << *q[0] << std::endl;        std::cout << *(q[0]+1) << std::endl;        std::cout << *q[1] << std::endl;        std::cout << *(q[1]+1) << std::endl;        std::cout << *p[0] << std::endl;        std::cout << *(p[0]+1) << std::endl;        std::cout << *p[1] << std::endl;        std::cout << *(p[1]+1) << std::endl;}

运行结果:

105023_NEWN_2326611.png

转载于:https://my.oschina.net/u/2326611/blog/1491721

你可能感兴趣的文章
SQL语句:Group By总结
查看>>
Java字节码 小结
查看>>
sed 替换多个空格为一个
查看>>
ControlTemplate in WPF —— DataGrid
查看>>
ubuntu下安装gedit插件
查看>>
Android圆形旋转菜单,并支持移动换位功能
查看>>
[js高手之路]node js系列课程-图解express+supervisor+ejs用法
查看>>
理解Neural Style
查看>>
对中间过程进行调试
查看>>
怎样获取数据库中某一个字段长度最长的那条记录
查看>>
yourphp常用标签
查看>>
anchor_target_layer层解读
查看>>
7.6 服务远程暴露 - 注册服务到zookeeper
查看>>
Lua------------------unity与lua的热更新
查看>>
【Win 10 应用开发】UI Composition 札记(一):视图框架的实现
查看>>
JavaScript面向对象总结
查看>>
分布式系统理论基础,以及选举,多数派,租约
查看>>
Breadth-first search 算法(Swift版)
查看>>
Vue.js系列之四计算属性和观察者
查看>>
pycharm 对代码做静态检查
查看>>