C++/C | 关于char* char[] char = new char[n]


将字符串常量赋给\(char*\)会怎么样?

1. 先看下在C++中给\(char*\)赋予一个常量字符串会有怎样的结果:

在VC环境下运行, VC直接禁止这样的操作通过编译, 抛出Error.

GCC下则抛出Warning, 这是GCC下给出的warning信息:

2.如果是在C标准下, 那么将字符串常量赋给\(char*\)可以正常编译通过.
且C语言标准下,这是正常的. 但是C++中这样修改赋值则会导致程序无法正常结束. 因而更推荐的写法是\(const\) \(char*\), 这会避免后续代码中出现修改字符串常量的行为.

2. \(char*\)\(char[]\), \(char = new char[n]\)区别在哪?

    char *a = "12345";   // 字符串常量, 更推荐写const char*
    char b[] = "12345"; // 栈区开辟空间, 动态
    char *c = new char[6]; // 堆区开辟空间, 动态
    strcpy(c, "12345");
    delete []c;

后两种写法中都可以对字符串的内容进行修改.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM