作业帮 > 综合 > 作业

char * (a[50]) = {'a','b',

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 04:08:20
char * (a[50]) = {'a','b',
char * a[] = {'a','b','c'};可以
为什么char * a = {'a','b','c'};不可以
char * a[] = {'a','b','c'}; // a是一个数组,后面的{}是对数组的初始化队列.但这里也是不行的,因为数组的元素类型是char*,不能用char值进行初始化.
char * a = {'a','b','c'}; // a是指针,没有这样的初始化方法的.
char a[] = {'a','b','c'}; // 这样才可以,a是一下字符数组,用字符序列对它进行初始化.
再问: 为什么会有这样的状况

再答: 你用的是什么编译器?这段代码应该是无法通过编译的(在vc6和g++上试过都是通不过的)。
再问: devcpp,用的mingw gcc执行的编译
再答: 好吧,看来是不同标准吧。
通常是这样的语法:
char* a[2] = {"a", "b"}; // 这里a是一个数组,它有两个元素,每个元素的类型是char*,后面用{"a", "b"}且有两个值的初始化序列对它进行初始化,这样a[0]的值就是"a"这个字符串的地址,a[1]就是"b"这个字符串的地址。
再问: char * a = {'a','b','c'}这个呢
再答: char * a = {'a','b','c'}; // a是指针,没有这样的初始化方法的。

这个也通不过编译啊