为什么c 中变量的数据类型及其指针应该相同
#include<stdio.h>
int main()
{
char testvar = 9;
int * testptr = &testvar;
printf("testvar = %d", *testptr);
return 0;
}
它的打印垃圾价值为什么??
您初始化了一个字节并打印了四个字节,所以其他三个字节是任意的。
试试这个:
int testvar = 9;
这将初始化四个字节。
或者这个:
char testvar = 9;
char dummy1 = 0;
char dummy2 = 0;
char dummy3 = 0;
int * p = (int *)& testvar;
根据堆栈的布局方式,可能会得到您想要的东西(取决于平台、编译器和优化)这是非常非常糟糕的编程实践。不要在生产代码中做这种事情
也不要在家庭作业中这样做。这是一种你玩的东西,只是为了看看当你学习指针如何工作时会发生什么。