数组定义不能用常量值

问题描述

数组定义不能用常量值

#include
#include
#include
#include
using namespace std;
int main()
{
string str;
cout<<"输入字符串"
<<"(Crtl+Z退出输入)"<
getline(cin,str);
const size_t str_size=str.size();
char cha[str_size]; //Erro:不能用常量值
system("pause>nul");
return 0;
}

//我const了呀。。这是为什么呢。。怎么样才行啊

解决方案

#include
const size_t str_size=str.size();
char *cha=(char *)malloc(sizeof(char)*str_size);
const字符确实是用来定义常量的,但是它是一个在函数运行时形成的常量;数组的大小分配是在程序编译连接时分配空间的,这个时候你的size还没有,无法为数组分配大小,就会出错,建议使用动态分配内存

解决方案二:

常量不能用变量赋值const size_t str_size=str.size();,str.size();是变量不行

时间: 2024-08-31 20:21:22

数组定义不能用常量值的相关文章

processing-java 数组定义,报错:unexpected token: [ 如何解决?

问题描述 java 数组定义,报错:unexpected token: [ 如何解决? RT,代码如下: class Data { String name; int size; int level; int father; int x = 0; int y = 0; int w = 0; int h = 0; Data(String tname, int tsize, int tlevel, int tfather) { name = tname; size = tsize; level = t

swift 数组定义 文档和xcode实际操作不一致,你们有遇到吗

问题描述 swift 数组定义 文档和xcode实际操作不一致,你们有遇到吗 解决方案 xcode是对的,你的文档官方的吗?少了半边不行哦 解决方案二: 看下是不是类型不对,或者不匹配 解决方案三: xcode怎么说你就怎么来吧,一般都是倾向于相信xcode

java-JAVA中数组定义new分配内存空间的问题

问题描述 JAVA中数组定义new分配内存空间的问题 JAVA中在定义一个数组的时候,根据书上内容形式,举一个例子 int[] arr=new int[]{3,4,5,}; 但是在实际中,我见到过或者使用更多的是 int[] arr={3,4,5}; 这个时候要不要new去分配内存又有什么区别呢? 在JAVA中 是不是没有new 分配的时候 数组arr在内存栈中 new分配内存空间时 数组arr就到了堆内存中呢 解决方案 现在也不是很理解,找了一个大神告诉我说 第二种是静态初始化,在编译的时候就

C++数组定义和访问

转自:http://www.cnblogs.com/kykuaileren/archive/2011/09/04/2166646.html 一.数组定义和初始化 1: 一维数组初始化: 2: 标准方式一: int value[100]; // value[i]的值不定,没有初始化 3: 标准方式二: int value[100] = {1,2}; // value[0]和value[1]的值分别为1和2,而没有定义的value[i>1] 4: // 则初始化为0 5: 指针方式: int* va

link发射属性的时候如何排除一些不要的属性,只查询其中一部分,用数组定义的属性可以么?

问题描述 link发射属性的时候如何排除一些不要的属性,只查询其中一部分,用数组定义的属性可以么? link发射属性的时候如何排除一些不要的属性,只查询其中一部分,用数组定义的属性可以么? 解决方案 string[] excludes = { xxx, xxx, ... }; //不需要的属性 PropertyInfo[] props = typeof(T).GetPropertites(x => !excludes.Contains(x.Name)).ToArray(); ...

关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组.

问题描述 关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. package cn.xtgj.testarr; /** 目前有数组" int[] arr = {11,2, 4, 2, 10, 11},定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. * */ public class Arr { public void method(int[] arr){ int count=0; for(int i=0;i<arr.length;i++){ fo

《从缺陷中学习C/C++》——6.2 数组定义和值初始化形式混淆

6.2 数组定义和值初始化形式混淆 从缺陷中学习C/C++代码示例 int *ip = new int(12); for (int i = 0; i < 12; i++) { ip[i] = i; } delete [] ip;现象&结果产生运行时错误,提示如下的错误信息: glibc detected *** free(): invalid next size (fast) Bug分析int *ip=new int(12)表示new了一个整型变量,值是12.ip指向这个变量. new返回的

《C++覆辙录》——第2章 语法问题2.1:数组定义和值初始化的语法形式混淆

第2章 语法问题 C++覆辙录C++语言的语法和词法结构博大精深.此复杂性的一部分是从C语言那里继承而来的,另一部分则是为支撑某些特定的语言特性所要求的. 本章中我们将考察一组语法相关的头疼问题.其中有些属于常见的手误,但是错误的代码仍然能够通过编译,只不过会以出人意料的方式运行罢了.另外一些则是由于一段代码的语法结构及它们的运行期行为不再互为表里.其余的部分,我们主要研究语法层面的灵活余地带来的问题:明明是一字不差的代码,不同的软件工程师能从中得出大相径庭的结论来. 2.1:数组定义和值初始化

jsp数组定义,遍历输出方法

数组定义对于开始不知道长度的数组,可以用vector,还可能arraylist.hashtable.map.hashmap 简单创建一个数组 <html>   <head>     <title>creating an array</title>   </head>   <body>     <h1>creating an array</h1>     <%         double accounts