字符指针数组输出前不用加*

#include
main(){
char* pa[7]={"sunday","monday","tuesday","wednesday"};
int i=1;
printf("%s",pa[i]);
int* a[7];
a[i]=&i;
printf("%d",*a[i]);

}

为什么printf("%s",pa[i]);的pa[i]前不用加*
而printf("%d",*a[i]);的a[i]前加*

m0_47086280
程橙宸 回复z1064188787: 数组本身存的就是指针
6 个月之前 回复
z1064188787
z1064188787 我也觉得这个很郁闷,个人认为字符指针数组pa[7]中接受的是"sunday","monday"等字符串的地址,那么在printf中应该使用“*”(取值符)取到对应地址中的值,为啥直接用数组名pa[i]输出呢,实在想不通。。。。。同求大神合理解释
8 个月之前 回复

2个回答

前面加个*引用的值,不加*引用的是地址。

&i代表的是取地址,也就是a[i]中存的值是i的地址,*a[i]是取地址操作,就是取出a[i]地址处对应的i的地址,不加星号就就是a[i]对应的值。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐