gpt4 book ai didi

c - 为什么我收到编译错误 "error: conflicting types for ‘ptr’“以下代码? static int val=33; int *ptr;//=&val; ptr=&val;

转载 作者:行者123 更新时间:2023-11-30 21:16:49 26 4
gpt4 key购买 nike

我的目标是使静态变量“val”可用于不同的 .c 文件(仅用于实验)。

所以我创建了一个全局指针来保存静态变量的地址,通过这个全局指针,我试图访问另一个文件中静态变量的值。

但是,

static int val=33;
int *ptr;
ptr = &val;

给我错误。

如果我这样做,它就会起作用。

static int val=33;
int *ptr = &val;

为什么?

最佳答案

正在做

static int val=33;
int *ptr;
ptr = &val; /* define a global variable with an init value */

global范围内定义全局变量,对于编译器来说,ptr的隐式类型是ptr =行中的int &val; 所以这与 int* 不兼容。您不能在全局范围内进行赋值,这就是为什么 ptr = &val; 不是先前定义的 ptr 的赋值,而是具有初始值的全局变量的定义。

将代码放在本地范围内没有问题,例如

int main()
{
static int val=33;
int *ptr;
ptr = &val; /* an assignment of ptr */
}

编译没有问题

关于c - 为什么我收到编译错误 "error: conflicting types for ‘ptr’“以下代码? static int val=33; int *ptr;//=&val; ptr=&val;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091344/

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