c++很奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:24:23
char Char[5]={5,0,0,0,3};
int * Int=(int*) &Char[1];
cout<<Int[0]<<endl;
我就不明白 Int不是指针吗?Int[]运算符不知道起什么作用的,
指针数组?可输出的不对啊,,
不是啊不是啊,,,兄弟们看第三句
主要是Int[0] 这个Int加个[]运算符

Int[0] 等价于*(Int+0)
这题的结果和Int长度有关,看你是16位还是32位。

int * Int=(int*) &Char[1];
Char[5]是char类型的数组,虽说char和int可以转换,但是存储类型还是不一样的,
int占4个字节,char占1个字节,
所以你硬要将存储一个字节的char变量地址转换成int类型的地址是不合适的。

指针和数据的关系你没有弄清楚!

数组操作可以根据下标准确定位

指针指向数组头地址后,也可以定位到数据里面每个元素

这里Int指针其实就完全等于地址&Char[0]
Int和Char是一样的

恩。。我的浅见是 char Char[5]={5,0,0,0,3};
int * Int=(int*) &Char[1];

当中的 前面的 char是 类型定义的操作符 后面的应该跟的是是 变量名~ 但是在C++的命名规则当中 保留了一些关键字,正如你所使用 int ,char为变量名等等。这些都是 C++保留的关键字 所以不能用这些关键字来 命名 变量啊 数组啊 函数名啊 类型名啊 等等。。。