gpt4 book ai didi

C - 指针和引用

转载 作者:行者123 更新时间:2023-11-30 18:27:52 25 4
gpt4 key购买 nike

我正在学习计算机科学,并在业余时间尝试 C 编程语言。另外,我使用这本书是为了更好地理解:计算机系统:程序员的视角。它还提供了一些 C 语言示例代码。

所以,我编写了一个带有一些指针的代码 - 像这样:int *x。我仍然在与指针和引用作斗争 - 尽管我认为我理解它。

所以我写了一个小脚本并尝试了指针和引用。代码:

#include <stdio.h>

int main() {
int *x;
printf("Pointer: %p\n", x);
printf("Value int: %d\n", *x);
printf("Pointer ref: %p\n", &x);
}

bash/终端中的输出:

Pointer: 0x7ffe99ea7420
Value int: 1
Pointer ref: 0x7ffe99ea7330

(设置:Ubuntu 16.04 x86_64)

现在我有点困惑,未初始化的变量x的值为1 - 并且指针和引用指向内存地址。在大学的第一个学期,我学习了 Java,也了解了 JVM 和 Stack 的工作原理。所以我假设在C中也是一样的。编译器为代码中的每个对象分配了一些内存。但为什么x的值是1

也许会有人好心地向我解释一下。我也非常感谢任何进一步阅读或知识交流的链接。

最佳答案

未初始化的变量具有未指定的值。在分配它们之前读取它们是未定义的行为。因此,x*x 表达式是未定义行为

非常粗略地说,未定义的行为意味着任何事情都可能发生并且您的代码被破坏。任何 C 初学者书籍都会介绍这一点。

关于C - 指针和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182561/

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