读书人

无法从quot;char *[]quot;转换为 quot;const char

发布时间: 2014-01-14 23:14:00 作者: rapoo

无法从"char *[]"转换为 "const char **"
#include <stdio.h>
void display_car_brands(char *brand_table[], int size)
{
char const **cbp;
for(cbp = brand_table; cbp < brand_table+ size; cbp++)
{
printf("%s\n", *cbp);
printf("%c\n",**cbp);
}
}
int main( )
{
char *cars[] = { "ASTONMARTIN",
"AUDI",
"BENZ",
"BENTLEY",
"BMW",
"BUGATTI",
"FERRARI",
"JAGUAR",
"LAMBORGHINI",
"MASERATI",
"MAYBACH",
"ROLLS ROYCE"
};
int array_size = sizeof(cars) /sizeof(cars[0]);
display_car_brands(cars,array_size);
return 0;
}

程序报错:error C2440:"=":无法从"char *[]"转换为 "const char **"
[解决办法]
char const **cbp;
去掉const修饰符
[解决办法]


#include <stdio.h>
void display_car_brands(const char *brand_table[], int size)
{
const char **cbp;
for(cbp = brand_table; cbp < brand_table+ size; cbp++)
{
printf("%s\n", *cbp);
printf("%c\n",**cbp);
}
}


int main()
{
const char *cars[] = { "ASTONMARTIN",
"AUDI",
"BENZ",
"BENTLEY",
"BMW",
"BUGATTI",
"FERRARI",
"JAGUAR",
"LAMBORGHINI",
"MASERATI",
"MAYBACH",
"ROLLS ROYCE"
};
int array_size = sizeof(cars) /sizeof(cars[0]);
display_car_brands(cars,array_size);
return 0;
return 0;
}
//注意const的用法

[解决办法]
当然不行
char *brand_table[];
brand_table[0] = "123";

const char **cbp = brand_table;

brand_table[0] = "abc"; //这时cbp指向的内容也被修改了,但是cbp是const类型,编译时根据它不会被修改而作了优化,就可能导致后续出错。
printf("%s", cbp[0]); //cbp编译优化,可能会保存在寄存器里,这里打印的的结果可能还是"123"

读书人网 >C++

热点推荐