C语言小问题 进来帮个忙大哥们

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:16:39
#include<stdio.h>
void main()
{
char *a[]={"cccc","ssss","vvvv"};
int i=0;
char *p;
while(i<3)
{
p=*(a+i++);//这里的*代表什么
printf("%s\n",p);
}
printf("\n");
}
p得到的是什么
*(a+i)和a[i]
什么区别
2楼的大哥我想问下p=*(a+i++)把*号去掉就不能输了 怎么回事

p=*(a+i++);这一句相当于:
p=a[i];i++;

没有区别,*(a+i)就是a[i]
a+i=&a[i]

*号是取值算符,即对后面指针指向的内存单元取值。
定义中
char *a[]={……}
你这种定义方式,定义了三个指针,分别指向三个字符串的地址。
当p=*(a+i++)不加*号时,p指向的就是指针变量,而不是指向字符串的首地址。

*a是一个指向数组的指针。a+i++是“ww”的首地址!*(a+i++)是指向WW中的前一个w的字符指针!