#include <iostream> #include <math.h> #include <cstring> /* 字符处理库 */ #include <iomanip> /* setw(行宽) */ #include <cstdio> using namespace std; int main(){ char a[]={"111123"}; }
这里不指明字符串大小是可以的吗?与指明大小的有什么区别呢?
感激不尽!
解决方案
60
假如不指明大小,大小就是刚好是你初始化字符串的大小
30
不指定大小,比较灵活。例如你想换个更长的串,直接替换就可以了,只需要改动一处。
指定大小以后,必须保证串长< 元素个数。
假如想更换一个更长的串。只好同时修改元素个数。
就这点区别。
字符串字面值长度,数组初始化表大小,编译器都是知道的。
所以不指定大小,并且初始化的数组,C,C++是允许存在的(这样,可以给程序员点灵活性)。
指定大小以后,必须保证串长< 元素个数。
假如想更换一个更长的串。只好同时修改元素个数。
就这点区别。
字符串字面值长度,数组初始化表大小,编译器都是知道的。
所以不指定大小,并且初始化的数组,C,C++是允许存在的(这样,可以给程序员点灵活性)。
60
对的,占据了原来的”\0″的位置。
你之后假如不再使用a数组,那么是没有问题的。
但你之后例如要输出a数组,那么可能由于”\0″的缺失,它会一直往后读,直到遇见新的”\0″(那就可能出问题了)