c - C 中带有初始化的 const 数组定义是否需要长度参数?

标签 c codevisionavr

const int array[]  = {1,2};
const int array[2] = {1,2};

编译和工作都没有问题。这些有什么区别吗?

(我使用 Codevision,但这并不重要)

最佳答案

不,没有区别。

唯一的异常(exception)是第二种情况,如果用字符串文字初始化 char 数组并且数组的大小不反射(reflect) '\0' 终止符,然后后者被砍掉。

char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide

对于所有其他类型或种类的初始化,编译器应该警告初始化器太大。

如果初始化器比数组“小”,则其余元素将被初始化,就好像它们是在全局范围内定义的一样,就好像它们是静态的

所有这些与此上下文中的任何内容是否为 const 完全无关。

关于c - C 中带有初始化的 const 数组定义是否需要长度参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529255/

相关文章:

c - 在C中制作一个字符串回文

c - 如何防止 socket() 系统调用返回文件描述符 0,1 或 2?

java - 物联网 : ESP module Wifi Ip address

c - 我在 CodeVisionAVR 中使用 ATmega164 的吉他调音器代码无法处理超过 4 个样本

c - 如何声明存储在 PROGMEM 中的矩阵

c - 替换函数或由文本本身定义

c - int *ptr= 5 怎么做;与 int *ptr= 变量地址不同?

c - getdate.y语法疑惑

C 编程 CodeVision AVR

c - 在 codevision 编辑器中 对于类别代码,例如(区域)