栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

浅谈C语言指针——二维数组、*pt[i]、(*pt)[i]

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈C语言指针——二维数组、*pt[i]、(*pt)[i]

浅谈C语言指针——二维数组、*pt[i]、(*pt)[i]

前言

现在在期末复习备考阶段,但是C语言中的指针总是有似懂非懂的感觉,每次使用总要翻找资料,索性总结下,希望对大家也有帮助!不对的地方请多多指正!


一、二维数组 二、*pt[i] 1、*pt[i]与一维char型数组 2、*pt[i]与一维int型数组 3、*pt[i]与二维数组 三、(*pt)[i]
一、二维数组

为举例方便,不妨先定义二维数组a[3][4]

以下为核心内容:

a=&a[0]
*a=a[0]=&a[0][0]
*(*a)=a[0][0]


二、*pt[i] 1、*pt[i]与一维char型数组

先不妨定义

char a[ ]={“I Love You!”,“Are you?”}
char *pt[2]={&a[0],&a[1]}

以下为核心内容:

pt=&pt[0]


当以%d输出时:*pt=pt[0]=&a[0]、**pt=a[0]
此时一定要明白a[0]是"I Love You!"的地址


当以%s输出时:*pt=pt[0]=&a[0]
输出的直接是一"I Love You!"这一字符串
**pt这一形式不存在

问:为什么当以%s输出时,*pt中存的地址,却可以输出值?

答:因为双引号(" ")默默起了以下三个作用:
1、申请空间来存放字符串
2、在字符串结尾处加上’’
3、返回字符串地址

这也是字符串可以赋值给字符指针的原因

char *p=“I love You”;

2、*pt[i]与一维int型数组

int a[ ]={1314 , 521}
int *pt[2]={&a[0],&a[1]}
pt=&pt[0]
*pt=pt[0]=&a[0]
**pt=a[0]

3、*pt[i]与二维数组

这个时候,要分为两种情况:
第一种:
先定义

int a[3][4]
int *p[3]={&a[0]、&a[1]、&a[2]}
//将二维数组行地址的地址赋给指针数组

此时有:

pt=&pt[0]
pt=pt[0]=&a[0]
**pt=
(pt[0])=a[0]=&a[0][0]
***pt=a[0][0]

第二种:
先定义

int a[3][4]
int *p[3]={a[0]、a[1]、a[2]}
//将二维数组行地址赋给指针数组

此时有:

pt=&pt[0]=a=&a[0]
*pt=pt[0]=a[0]=&a[0][0]
**pt=a[0][0]

三、(*pt)[i]

此时pt=a,同以上第一点关于二维数组的讲解

总结
以上就是今天要讲的内容,这些是自己翻阅资料和做题中总结出来的,可能还有不足之处,请批评指正。另外,指针也不是太难,初学者千万不能害怕而放弃,加油鸭!!!
冲,冲,冲!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号