根据C标准,这被认为是定义这是C中的一个定义吗?
int x;
因为它声明x和分配存储空间。但这也是一个定义吗?
int *x;
也就是说,声明一个指针变量或数组变量是否分配存储空间?我猜不是因为我们必须使用malloc。
根据C标准,这被认为是定义这是C中的一个定义吗?
int x;
因为它声明x和分配存储空间。但这也是一个定义吗?
int *x;
也就是说,声明一个指针变量或数组变量是否分配存储空间?我猜不是因为我们必须使用malloc。
int* x;
是一个定义。它分配存储来存储指针。它不会为整数分配任何存储空间 - 这就是为什么如果您不想指向现有变量(或其他内存位置)需要malloc
。
纯声明将类似extern int x;
或extern int* x;
,然后在不同的编译单元中具有相应的定义。
int *x;
分配存储。变量x
被分配的存储等于sizeof(int *)
。它包含一个垃圾值,如果它位于块范围,或者包含一个空值指针,如果它位于文件范围。
它最初包含垃圾,如果它在块范围。如果它在文件范围内,它最初包含一个空指针值。 –
@KeithThompson谢谢! –
用T替换类型('int *'),所以..'T x':这是否被认为是一个定义? – user2864740
在这两种情况下,都会分配一个对象。在第二种情况下,该对象恰好是一个指针。 –
与之前的数千人一样,你需要学习区分指向他们指向的东西的指针。指针的存储也是存储。指针本身就是数据,不管它是否被用来访问更多的数据。 – delnan