C++程序 中 too many initializers错误是咂回事
答案:3 悬赏:60 手机版
解决时间 2021-03-29 19:15
- 提问者网友:雪舞兮
- 2021-03-29 08:34
C++程序 中 too many initializers错误是咂回事
最佳答案
- 五星知识达人网友:青尢
- 2021-03-29 09:17
第一个问题,只能确定数组没问题,已经试过了
第二个问题,char *name是声明一个指针,指向char类型数据,加上[]变成指针数组,数组的内容都是指向char的指针;而char **name则是指向指针的指针,即有一个指针指向char型,另有一个指针指向存放char指针的地址。
'char [3]' to 'char ** ':你将指向char的指针,赋值给指向指针的指针,类型不一样不能直接赋值。即使要直接赋值,也得在等号右边加上(char **)转换类型追问你好,那我想实现给**name初始化 该如何实现, **name 第一个指针指向
“-s",第二个指针指向"3",第三个指针指向"heart_scale",第四个指针指向"model_1"};追答首先明确一点,对于char *name1[]与char **name2,name1[x]与name2类型是不一样的,而name1与name2类型一样。(数组名是指向数组元素的指针)
name2必须指向一个指针,例如name2=name1,或者name2=&name1[0]。
其次,你要指向name1[x]本身(数组中的元素是指针),还是要指向name1[x]所指向的字符本身?char **name2只能指向指针,例如:name2=&name1[0](等同于name2=name1),此时*name2为name1[0]这个元素,也是指针,而**name2才是字符'-'。此时*(name2+x)即name1[x]。
再次,name2是一个变量,同时只能指向一个东西,要指向不同的,你得声明数组。
第二个问题,char *name是声明一个指针,指向char类型数据,加上[]变成指针数组,数组的内容都是指向char的指针;而char **name则是指向指针的指针,即有一个指针指向char型,另有一个指针指向存放char指针的地址。
'char [3]' to 'char ** ':你将指向char的指针,赋值给指向指针的指针,类型不一样不能直接赋值。即使要直接赋值,也得在等号右边加上(char **)转换类型追问你好,那我想实现给**name初始化 该如何实现, **name 第一个指针指向
“-s",第二个指针指向"3",第三个指针指向"heart_scale",第四个指针指向"model_1"};追答首先明确一点,对于char *name1[]与char **name2,name1[x]与name2类型是不一样的,而name1与name2类型一样。(数组名是指向数组元素的指针)
name2必须指向一个指针,例如name2=name1,或者name2=&name1[0]。
其次,你要指向name1[x]本身(数组中的元素是指针),还是要指向name1[x]所指向的字符本身?char **name2只能指向指针,例如:name2=&name1[0](等同于name2=name1),此时*name2为name1[0]这个元素,也是指针,而**name2才是字符'-'。此时*(name2+x)即name1[x]。
再次,name2是一个变量,同时只能指向一个东西,要指向不同的,你得声明数组。
全部回答
- 1楼网友:患得患失的劫
- 2021-03-29 11:40
规律记好
除了第一维的长度可以由编译器自动计算而不需要指定(只有最左边的一个可以不指定,其他都必须指定长度,如: int a[][2][2] = {1, 2, 3, 4, 5, 6, 7, 8};
除了第一维的长度可以由编译器自动计算而不需要指定(只有最左边的一个可以不指定,其他都必须指定长度,如: int a[][2][2] = {1, 2, 3, 4, 5, 6, 7, 8};
- 2楼网友:痴妹与他
- 2021-03-29 10:09
too many initializers
直译是:初始化太多
含义:初始化表达式的个数比数组元素数多
定义的时候,char *name1[]={};这个name1的第一维的长度是确定的,不能改变
而char **name2;这个name2的第一维的长度是可变的。
使用起来的时候,name1不能被赋值,即不能使用name1=name2;其它取值运算都可以。
而name2就要自由的多,可以使用name2=name1;取值运算也同样可以。追问那为何 char **name={"-s","3","heart_scale","model_1"};
这样初始化会出错呢追答这样虽然不太好,但还是可以运行的,不信你试试。追问不能运行,出现如下错误
D:\C++____libsvm-3.1\shiyan2\main.cpp(15) : error C2440: 'initializing' : cannot convert from 'char [3]' to 'char ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast追答你说的这个错误根本不在你给出的这段代码里面。。
错误提示是说你把一维数组当做二维数组来使用了。
直译是:初始化太多
含义:初始化表达式的个数比数组元素数多
定义的时候,char *name1[]={};这个name1的第一维的长度是确定的,不能改变
而char **name2;这个name2的第一维的长度是可变的。
使用起来的时候,name1不能被赋值,即不能使用name1=name2;其它取值运算都可以。
而name2就要自由的多,可以使用name2=name1;取值运算也同样可以。追问那为何 char **name={"-s","3","heart_scale","model_1"};
这样初始化会出错呢追答这样虽然不太好,但还是可以运行的,不信你试试。追问不能运行,出现如下错误
D:\C++____libsvm-3.1\shiyan2\main.cpp(15) : error C2440: 'initializing' : cannot convert from 'char [3]' to 'char ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast追答你说的这个错误根本不在你给出的这段代码里面。。
错误提示是说你把一维数组当做二维数组来使用了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯