我知道char" c"和2-D字符串数组" stringArray [0] [0]"都是" 0"并且平等。但是,我在比较它们时遇到了麻烦。
#include <stdio.h>
int main(){
char c = '0';
const char *stringArray[2][2] = {"0","1"},{"2","3"};
printf("%d\n",c); // prints 0
printf("%s\n",stringArray[0][0]); // prints 0
if(c == stringArray[0][0][0]){ // compiler threw an error with stringArray[0][0]
printf("Success!\n"); // does not print success
}
return 0;
}
答案 0 :(得分:0)
我认为它解释了一切:)
printf("%d\n", stringArray[0][0]);
printf("%d\n", '0');
printf("%d\n", stringArray[0][0][0]);
printf("%d\n", *stringArray[0][0]);
./a.out
182304636
48
48
48
试试这个
if('0' == *stringArray[0][0]){
printf("Success!\n");
}
./a.out
Success!
答案 1 :(得分:0)
使用初始化程序列表(添加两个大括号)修复编译器错误后,它可以正常工作。更正后的代码:
#include <stdio.h>
int main (void){
char c = '0';
const char *stringArray[2][2] = {{"0","1"},{"2","3"}};
printf("%d\n",c); // prints 48
printf("%s\n",stringArray[0][0]);
if(c == stringArray[0][0][0]){
printf("Success!\n");
}
return 0;
}
按预期输出:
48
0
Success!