gpt4 book ai didi

c - 声明一个元素数量为 0 的数组仍然可以存储值

转载 作者:太空狗 更新时间:2023-10-29 15:04:31 26 4
gpt4 key购买 nike

我知道使用负索引纯属运气。但出于好奇,我尝试了这个。我知道你可以声明 array[0];就像 malloc(0);是合法的。但是我怎么可以在数组 [0] 中存储一个值呢?

#include <stdio.h>
#include <conio.h>
int main(void)
{
int i;
int array[0];
array[0] = 5;
printf("%d\n",array[0]);
getch();
}

最佳答案

这样一个 0 大小的数组在标准 C 中是违反约束的,你的编译器不应该让你在没有给你诊断的情况下逃脱。如果它没有告诉您什么,那一定是您的编译器供应商添加到其 C 方言中的扩展。

不要依赖此类扩展。

无论您是否声明大小为 0 的数组,C 都没有强制执行数组或指针访问的绑定(bind)检查。但是,如果在编译时知道超出范围,那么一个好的现代编译器仍然应该给你一个警告。

关于c - 声明一个元素数量为 0 的数组仍然可以存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620531/

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