这是C语言中的定义吗?
根据C标准,这被视为一个定义这是C语言中的定义吗?,c,declaration,definition,C,Declaration,Definition,根据C标准,这被视为一个定义 int x; 因为它声明x并分配存储。但这也是一个定义吗 int *x; 也就是说,声明指针变量或数组变量是否分配存储?我猜不会,因为我们必须使用malloc是一个定义。它分配存储来存储指针。它不为整数分配任何存储—这就是为什么如果不想指向现有变量(或其他内存位置),则需要malloc 纯声明类似于extern intx或外部内部*x,然后在不同的编译单元中有相应的定义。int*x分配存储。变量x分配的存储等于sizeof(int*)。如果它在块范围内,则它包
int x;
因为它声明x并分配存储。但这也是一个定义吗
int *x;
也就是说,声明指针变量或数组变量是否分配存储?我猜不会,因为我们必须使用malloc代码>是一个定义。它分配存储来存储指针。它不为整数分配任何存储—这就是为什么如果不想指向现有变量(或其他内存位置),则需要
malloc
纯声明类似于
extern intx代码>或外部内部*x代码>,然后在不同的编译单元中有相应的定义。int*x代码>分配存储。变量x
分配的存储等于sizeof(int*)
。如果它在块范围内,则它包含一个垃圾值;如果它在文件范围内,则它包含一个空指针值。将类型(int*
)替换为T,因此tx
:这被认为是一个定义吗?在这两种情况下,都分配了一个对象。在第二种情况下,这个对象恰好是一个指针。你像以前一样,需要学会区分指针和它们指向的东西。指针的存储也是存储。指针本身就是数据,不管它是否用于访问更多数据。您不必使用malloc
。您可以将空指针值分配给x
,也可以将某个对象的地址分配给它:int n=42;int*x;x=&n代码>将其声明为int*x的问题是,您可能会将int*x、y误读为int*x;实际为int*x时为int*y;int y。如果它在块范围内,则它最初包含垃圾。如果在文件范围内,它最初包含一个空指针值。