gpt4 book ai didi

c - C中的全局变量定义

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:36 24 4
gpt4 key购买 nike

在我下面的代码中

#include<stdio.h>
int a;
a=3;

void main(){
printf("%d",a);
}

为什么我会收到警告,

a.c:3:1: warning: data definition has no type or storage class [enabled by default]

在另一种情况下,当我有

#include<stdio.h>
#include<stdlib.h>
int* a;
a=(int*)malloc(sizeof(int));

void main(){
*a=3;
printf("%d",a);
}

我收到error: conflicting types for ‘a’,并且警告为

警告:初始化从指针生成整数而不进行强制转换[默认启用]

为什么?

最佳答案

您只能使用常量初始化全局变量,并且必须在声明期间完成:

 int a = 3; // is valid

如果您需要通过 malloc 的返回来初始化一个全局变量,那么这必须在运行时发生。

int *a;

int main() {
a = malloc(sizeof(*a));
}

另外请不要在 C 中强制转换 malloc 的返回类型。这是常见的错误来源。 Do I cast the result of malloc?

关于c - C中的全局变量定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120831/

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