Code Bye

c++数组的使用遇到的问题

#include <iostream>
#include <math.h>
#include <cstring> /* 字符处理库 */
#include <iomanip> /* setw(行宽) */
#include <cstdio>
using namespace std;
int main(){
    char a[]={"111123"};
}

这里不指明字符串大小是可以的吗?与指明大小的有什么区别呢?
感激不尽!

解决方案

60

假如不指明大小,大小就是刚好是你初始化字符串的大小

30

不指定大小,比较灵活。例如你想换个更长的串,直接替换就可以了,只需要改动一处。
指定大小以后,必须保证串长< 元素个数。
假如想更换一个更长的串。只好同时修改元素个数。
就这点区别。
字符串字面值长度,数组初始化表大小,编译器都是知道的。
所以不指定大小,并且初始化的数组,C,C++是允许存在的(这样,可以给程序员点灵活性)。

60

引用:
Quote: 引用:

可以不指定。
弊端就是:你假如之后要修改字符串,则不能超过初始化时字符串的长度(否则会越界)

对的,不过本人有一点不是很确定,

char a[]={"abc"};
    a[3] = "d";
    a[4] = "e";
    a[5] = "f";
    cout<<a[3];

这里a[3]的值也是可以改变的,就是说占据了原来末尾\0的位置对吗?

对的,占据了原来的”\0″的位置。
你之后假如不再使用a数组,那么是没有问题的。
但你之后例如要输出a数组,那么可能由于”\0″的缺失,它会一直往后读,直到遇见新的”\0″(那就可能出问题了)


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++数组的使用遇到的问题