c - 我们可以声明数组的大小为零吗?
问题描述
main()
{
int x[0];
scanf("%s",x);
printf("%s",x);
}
为什么当我输入 qwerty79 时这个程序没有显示任何错误,而这个程序给我输出 qwerty79?
解决方案
在此,您声明具有 0 个成员的 int x 数组意味着它们没有为数组分配内存空间,并且它们没有内存位置名称 x。所以,当您输入整数字符串时,它们没有类型检查,另一个原因是编译器只知道有一些变量 x 但该类型未知,因为它们没有 x 的内存分配。所以,您的程序没有给出任何错误。有关详细信息,您必须阅读编译过程状态理论,它是编译器设计的一部分主题。
推荐阅读
- python - 如何使用 cv2 从数字中去除斑点背景?
- django - 名称“SocialAccount”未定义
- flutter - Flutter - 自定义计时器避免移动数字?
- javascript - 正则表达式删除门牌号,除非它也有字母
- angular - 如何在角度 axios 请求中解决此问题 Access-Control-Allow-Origin?
- oozie-coordinator - 无法使用 API 提交和执行 oozie 工作流 - 面临 HTTP/1.1 401 需要身份验证
- ios - 比较 Swift 中的两个 Double:“没有更多上下文,表达式的类型是模棱两可的”
- java - 使用 slf4j 记录 java 并将日志发送到 nginx 本地服务器
- azure - Azure Devops 测试历史记录休息 API
- azure - Azure Analysis Services 多维数据集刷新失败 - 错误代码 0xC112001C