gpt4 book ai didi

c - 使用 int 类型指针取消引用 char 值时获取垃圾

转载 作者:行者123 更新时间:2023-11-30 20:42:52 26 4
gpt4 key购买 nike

为什么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;

取决于堆栈的布局方式,可能会得到你想要的(取决于平台、编译器和优化)。 这是非常非常糟糕的编程习惯。永远不要在生产代码中执行此类操作。

也不要在你的家庭作业中这样做。当您学习指针如何工作时,您只是为了看看会发生什么而玩这种东西。

关于c - 使用 int 类型指针取消引用 char 值时获取垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36377539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com