我有这个代码而且有问题。
#include <iostream>
#include <stdio.h>
using namespace std;
void main()
{
char* str="hello_world";
cout<<str<<endl;
str[3]='\0';
cout<<str<<endl;
}
但如果我将char* str
更改为char str[]
。
它运作正常。为什么?
答案 0 :(得分:0)
当你声明char str []时,你声明了一个chars数组(可以读取和写入),并且这个数组被初始化为某些字符序列,即&#34;这是测试字符串&#34 ;被复制到此数组中的元素。
当你声明char * str时,你声明一个直接指向某个常量文字的指针 - 而不是副本。这些只能被阅读。
答案 1 :(得分:-1)
因为当你使用char str []时,会分配str,但是当你使用char * str时它不是。