|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main(){
char *str[3] = {
"a",
"c",
"e"
};
printf("%c\n%c\n%c\n", str[0], str[1], str[2]);
printf("%s\n%s\n%s\n", str[0], str[1], str[2]);
return 0;
}
这个程序第一个printf输出乱码,第二个正常,不懂是哪里问题?
str[0]这个里面存的是字符a的地址么?
第一点 : 因为 你的数组里用的是 " 双引号,这是字符串的表达方式
单一字符 用 ' 单引号
char *str[3] = {
"a",
"c",
"e"
};
第二点: 第一个输出的 格式是 %c 以字符格式, printf("%c\n%c\n%c\n", str[0], str[1], str[2]);
第二个输出的 格式是 %s 以字符串格式,printf("%s\n%s\n%s\n", str[0], str[1], str[2]);
结合你的数组里的内容,所以 第一个才会输出 是乱码,第二个是正常
printf("%c\n%c\n%c\n", *str[0], *str[1], *str[2]) 输出正确
个人理解的意思是
是因为 *str[0] 相当于 是 *(*(str + 0)+0) 也就是 str[0][0]
也就是 一维数组变成了二维数组的意思
以上 仅供参考
|
|