gpt4 book ai didi

c - 这行代码在C99中是什么意思?

转载 作者:行者123 更新时间:2023-11-30 15:01:01 24 4
gpt4 key购买 nike

static int* p= (int*)(&foo);

我只知道p指向代码段中的一段内存。但我不知道这一行到底发生了什么。
我想也许它是一个指向函数的指针,但指向函数的格式是:

returnType (*pointerName) (params,...);
pointerName = &someFunc; // or pointerName=someFunc;

最佳答案

您获取 foo 的地址并将其转换为指向 int 的指针。

如果 foop 属于不同类型,编译器可能会发出有关类型不匹配的警告。 Actor 阵容就是为了压制这个警告。

例如,考虑以下代码,它会导致编译器发出警告(从不兼容的指针类型进行初始化):

float foo = 42;
int *p = &foo;

这里foo是一个float,而p指向一个int。显然 - 不同的类型。

类型转换使编译器将一个变量视为不同类型。您可以通过将新类型名称放在括号中来进行类型转换。在这里,我们将使指向 float 的指针被视为指向 int 的指针,并且警告将不再存在:

float foo = 5;
int *p = (int*)(&foo);

您也可以省略一对括号,并且含义相同:

float foo = 5;
int *p = (int*)&foo;

如果 foo 是一个函数,问题是相同的。我们在赋值的右侧有一个指向函数的指针,在左侧有一个指向 int 的指针。将添加强制转换以使指向函数的指针被视为 int 的地址。

关于c - 这行代码在C99中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41778471/

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