请问C++的字符串string类为什么数组中不能为变量?
比如intn=5;stringa[n];这样为什么不可以?支持常变量,但不支持变量,什么原理?...
比如
int n=5;
string a[n];
这样为什么不可以?
支持常变量,但不支持变量,什么原理? 展开
int n=5;
string a[n];
这样为什么不可以?
支持常变量,但不支持变量,什么原理? 展开
6个回答
展开全部
1.好像新版本的编译器支持这个的……我记不得了。
2.因为常量相当于是固定的,编译的时候就可以得到这个值的,然后编译的时候就可以直接弄出数组长度什么的……就算是有值的变量,编译器它也是不知道的。
3.如果对于不支持这个的编译器要用这样的方式,可以用指针:
int n = 5;
string* p;
p = new string[n];
delete[] p;
要访问第一个元素就*p,第二个就*(p+1)以此类推。
2.因为常量相当于是固定的,编译的时候就可以得到这个值的,然后编译的时候就可以直接弄出数组长度什么的……就算是有值的变量,编译器它也是不知道的。
3.如果对于不支持这个的编译器要用这样的方式,可以用指针:
int n = 5;
string* p;
p = new string[n];
delete[] p;
要访问第一个元素就*p,第二个就*(p+1)以此类推。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为定义数组时,分配空间是需要一个固定的值,来确定你所申请的空间的大小。
int n = 5;在编译的时候并没有给n赋值,变量是在栈中存在的,不是固定的值。
int n = 5;在编译的时候并没有给n赋值,变量是在栈中存在的,不是固定的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要申请一块内存,但是多大啊?系统该你多大呢?好比你买饭,你只告诉卖饭的师傅说你要吃饭,要买饭,你不说买什么,买多少,师傅怎么给你打饭啊??
别说你这了,就算初始化的时候你用变量都不行的。。
别说你这了,就算初始化的时候你用变量都不行的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string a[n];
前面的string 表示你的a[n];是什么样的数据,比如整型int,浮点float,字符char,
这是有限定的 教程上有写的
前面的string 表示你的a[n];是什么样的数据,比如整型int,浮点float,字符char,
这是有限定的 教程上有写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的编译器太古董了..........
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询