c - 在 C 中初始化的 const 数组定义是否需要长度参数?
问题描述
const int array[] = {1,2};
const int array[2] = {1,2};
编译和工作都没有问题。这些有什么区别吗?
(我使用 Codevision,但这并不重要)
解决方案
不,没有区别。
唯一的例外是第二种情况,如果char
使用字符串文字初始化数组并且数组的大小不反映'\0'
-terminator,那么后者会被切断。
char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide
对于所有其他类型或类型的初始化,编译器应警告初始化程序太大。
如果初始化器比数组“更小”,则其余元素将被初始化,就好像它们是在全局范围内定义的一样,也就是它们是static
.
所有这一切都与此上下文中的任何事物是否存在完全无关const
。
推荐阅读
- ruby - Nokogiri 是否有理由不解析某个页面上的所有 HTML?(举例)
- c# - 通过C#中的索引号调用类中所有实例的属性?
- c# - 无法从 Excel 文件加载工作簿 - Office.Interop.excel
- python - Confusion matrix layout in python
- swift - 如何从 UIWebview 生成 PDF
- sql - OLE DB 提供程序报告了编译时和运行时之间架构版本的更改
- ubuntu-18.04 - 外部文件更改同步可能很慢:当前 inotify(7) 监视限制太低
- c++ - 如何从 QDateTime 获取时区
- javascript - 如何在 fullpage.js 中忽略整页容器外的 div
- javascript - 检查其中一个后检查单选按钮