c语言 定义数组前加个星号什么意思?具体说一下。数组指针难道就是这样定义,初始化的?那数组名就是c

作者&投稿:蓬隶 (若有异议请与网页底部的电邮联系)
char
*ch[4]={"red","green","blue"};
这句话的意思是这样,定义一个指针数组ch[4],这个数组里面每个元素都是指针,这些指针是r、g、b这三个字符串的头指针,还有一个是指向“\0”的作为字符串的结束标志。
简单点说,这样的定义是定义一个二维字符数组,数组的第一行就是第一个字符串"red",第二行是"green",第三行书"blue",第四行是"\0"。之后就可以用ch[0][1]表示第一个字符串的第2个字母,这里就是e,ch[1][4]表示第二个字符串的第五个字母,这里就是n。

在c语言中,当把数组名赋值给指针时,那么该指针指向数组的第一个元素,也就是该指针变量存放的是数组第一个元素的地址。所以
执行语句 int
a[5]={1,3,5,7,9},*p=a;之后,
p指向a[0],
而上面for循环中p<a+5等价于p<=a+4表示只要指针指向的元素地址小于等于数组a中的a[4]的地址,就输出p指向的元素。
而p++表示使指针p指向a的下一个元素,
所以结果自然是依次输出a[0],a[1],a[2],a[3],a[4]的值,即13579了

~