C++字符串地址不明白

来源:百度知道 编辑:UC知道 时间:2024/08/20 21:47:34
#include<iostream>
using namespace std;
void main()
{
char *str=NULL;
cin>>str[22];
}
为什么运行没有出错呢

那么我如果可以用多少位数组呢 是无限吗
VC6.0 运行明明没报错啊

人品好,就不会出错。

编译不会出错,但运行会出错,因为char *str=NULL,这里没有给str分配空间,而str[22]也不知道str到底分配了有多少空间,故不会编译出错。

这样做肯定会有错的。
只是你没有发现。

你首先要搞懂,char* 和 char[] 的区别。

char* 是一个指针,而且这个指针一般指向一个字符串常量。
char[] 是一个字符串数组。

你这么用会内存越界的。

如果输入字符的话,程序是会报错的。
因为str[22]的地址是22,处于非法地址。所以会报错。