首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

无法从"char *[]"转换为 "const char *"解决思路

2014-01-14 
无法从char *[]转换为const char **#include stdio.hvoid display_car_brands(char *brand_table[],

无法从"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"
 

热点排行