我在程序中声明了一个char
数组,可以容纳12个字符。我通过程序访问这些值。但每次我尝试运行该文件时它都不会给我一个错误但在char数组中显示警告并且.exe停止执行。我的程序看起来像这样:
int main(){
char *data[] = {"A,H,H,A"};
char* ahd_database[12] = {'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D'};
printf("The first letter in index is %c", index[0]);
但这不能执行。它发出的警告是:
Multiple markers at this line
- initialization makes pointer from integer without a cast [enabled by
default]
- (near initialization for 'ahd_database[7]') [enabled by default]
- (near initialization for 'ahd_database[6]') [enabled by default]
- (near initialization for 'ahd_database[5]') [enabled by default]
- (near initialization for 'ahd_database[4]') [enabled by default]
- (near initialization for 'ahd_database[3]') [enabled by default]
- (near initialization for 'ahd_database[2]') [enabled by default]
- (near initialization for 'ahd_database[1]') [enabled by default]
- (near initialization for 'ahd_database[0]') [enabled by default]
- (near initialization for 'ahd_database[11]') [enabled by default]
- (near initialization for 'ahd_database[10]') [enabled by default]
- (near initialization for 'ahd_database[9]') [enabled by default]
- (near initialization for 'ahd_database[8]') [enabled by default]
有人可以指出我的错误吗?
答案 0 :(得分:5)
我在程序中声明了一个字符数组,用于容纳12个字符
没有,你没有。您使用的是指向char
的指针数组,这与char
数组不同。
在您的代码中,您需要更改
char* index[12]
到
char index[12]
或者更好,
char index[ ] = {/*list*/}; //let the compiler allocate the size
因为,从您提供的初始化列表中,看起来您想要存储char
。您不需要char *
的数组。
注意:无论哪种方式,index
都不会以空值终止,因此请务必相应地使用它。如果您希望index
用作字符串,则必须将其终止。
此外,char *data[] = {"A,H,H,A"};
没有多大意义。一个简单的char *data = "A,H,H,A";
就足够了。如果您希望它可以修改,char data[] = "A,H,H,A";
是可供选择的选项。
答案 1 :(得分:2)
char* index[12] = {'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D'};
应该是
char index[12] = {'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D'};
/* ^ */
当您尝试使用index[0]
打印%c
时,您似乎需要char
s而不是char *
s的数组。
您也可以选择省略index
数组的大小,让编译器填充它。
答案 2 :(得分:2)
代码char* ahd_database[12] = {'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D'};
shloud为char ahd_database[12]=
。因为您的初始化是char array
,而不是array of char array
。但代码char *data[] = {"A,H,H,A"};
没问题,因为您指向array of char array
。