前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【编程经验】关于数组指针与指针数组的解释

【编程经验】关于数组指针与指针数组的解释

作者头像
编程范 源代码公司
发布2018-04-18 11:14:54
7370
发布2018-04-18 11:14:54
举报

啦啦啦啦,小编又来了呢,今天给大家讲讲数组指针与指针数组,依旧废话不多说,直接步入正题。

关于数组指针和 指针数组,相信狠很多同学对此疑惑过,今天我们来把他们分个清楚!

首先,让我们从字面意义上理解他们:

指针数组 本质呢 是数组!

数组指针 本质呢 是 指针!

(PS:你可以认为后俩字是什么,它本质就是什么! 语文的知识吧?宾语?(*^__^*) )

搞清楚此点之后呢,我们就可以继续来讲了,其实呢,指针数组本身就是个数组,只不过呢,它里面存放的数据类型不是int,也不是char这类基本类型,而是一个指针类型,说白了就是地址,所以叫指针数组! 记住:是存放指针的数组!

那么理解这个之后,数组指针也一样的道理,它呢本质是个指针,只不过是指向一个一维数组的指针,也称之为“行指针”,前提呢,是这个一维数组的长度和这个数组指针的长度要一致才可以赋值。

下面我们通过代码来理解:

//////////////////////////////////////////////////////////////////////////

//Name: 测试 数组指针 与 指针数组

//Author:C语言研究中心(www.dotcpp.com)

//time:2015/5/28

//////////////////////////////////////////////////////////////////////////

#include<stdio.h>

int fun()

{

char *p1[10]; // 指针数组

char (*p2)[10]; //数组指针

//10个char变量

char a1[10]={'1','2','3','4','5','6','7','8','9','\0'};

//两个长度为10的一维数组

char a2[2][10]={{'q','w','e','r','t','y','u','i','o','\0'},{'a','s','d','f','g','h','j','k','l','\0'}};

//将十个char类型变量的地址依次放到指针数组里

p1[0]=&a1[0];

p1[1]=&a1[1];

//...

p1[8]=&a1[8];

//验证输出

printf("%c\n",*p1[0]);

printf("%c\n",*p1[1]);

//...

printf("%c\n",*p1[8]);

//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////

//将一维数组的地址放到数组指针里

p2=&a2[0];

printf("%s\n",p2);

printf("%s\n",p2+1);//注意此处+1为加一行!

return 0;

}

怎么样?能看明白吗?运行结果如下:

如果您通过注释看懂这段代码后,想必应该就清楚数组指针和 指针数组的区别了。

最后我们总结数组指针和指针数组的区别如下:

1、本质不同,一个是数组,一个是指针

2、数组指针是一个变量,指针数组是N(数组长度)个变量

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程范 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档