你好,用 char 指针转换的 int 指针类型抛出意外输出? 下面是我的代码,请帮助我理解
#include<stdio.h>
int main()
{
int arr[3]={2,3,4};
char*p;
p=(char*)arr;
printf("%d\n",*p); // here 2 its good
p=p+8;
printf("%d\n",*p);//here 4 why not 1?
}
最佳答案
您的代码会导致未定义的行为。首先,我假设您的意思是:
char arr[3] = {2,3,4};
而不是你那里有什么。那么是的,你的第一个打印语句是正确的,将输出 2。但是第二个,任何事情都可能发生。你有一个 3 字节长的数组,现在你指向它的起始地址后 8 个字节。 任何东西都可以在那里,因此您的打印品可以显示任何输出。
如果你有:
int arr[3] = {2,3,4};
您的第二个输出将显示 4
或 0
,这分别取决于您是否拥有小端系统或大端系统。假设您有一个 4 字节的 int
类型。
关于c - 使用 char 指针类型转换的 int 指针抛出意外输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939081/