1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【c语言】定义一个指针数组 指向5个不同的char型数组

【c语言】定义一个指针数组 指向5个不同的char型数组

时间:2019-07-13 15:34:49

相关推荐

【c语言】定义一个指针数组 指向5个不同的char型数组

最近在准备复试的上机考试,顺便帮大一小孩做C语言作业。

其中有一道题目是将五个单词排序后输出

想到了利用<string.h>库函数中的strcmp,但是逐一比较只能找到最大值或最小值,没有想到解决的办法。

于是,想到了冒泡排序,

如果能用一个指针数组*p[5]指向这五个单词的数组,

就可以利用冒泡排序将指针数组内部进行排序了,

*p[0] ~p[5]分别指向由小到大的单词数组首地址,最后按照p数组的排序进行输出就可以了。

于是尝试着定义了指针数组,找到了一个不报错的定义方式。

起初定义的是:

char p[5] = {&a[10],&b[10],&c[10],&d[10],&e[10]};

想法是:数组p中存放的是abcde数组的首地址,

但是系统报错了,

报错信息是: invalid conversion from ‘char*’ to ‘char’ [-fpermissive]

大概是说无效转换,但是…从逻辑上,感觉好像是对的才对…

如果有人愿意解答,感激不尽 T ,T

char *p[5] = {a,b,c,d,e};

这种定义方式是正确的。(但是还不懂为什么…)

根据数组定义,a和&a都表示数组首地址,

所以该语句的解释应该是:将a的地址赋给p中存储的内容(地址)所指向的值???

但是根据下面打印出的内容:

p[0]中存储的是a[0]的地址,*p[0]代表a[0]的内容

p[0]存储的值是a的首地址,和打印a的结果是一样的

puts(a)和puts(p[0])是一样的效果,函数的参数都表示数组a的首地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。