char str []和char * str之间的区别是什么?

时间:2016-11-17 14:18:19

标签: c++

我有这个代码而且有问题。

#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[]。 它运作正常。为什么?

2 个答案:

答案 0 :(得分:0)

当你声明char str []时,你声明了一个chars数组(可以读取和写入),并且这个数组被初始化为某些字符序列,即&#34;这是测试字符串&#34 ;被复制到此数组中的元素。

当你声明char * str时,你声明一个直接指向某个常量文字的指针 - 而不是副本。这些只能被阅读。

答案 1 :(得分:-1)

因为当你使用char str []时,会分配str,但是当你使用char * str时它不是。