什么是"接近初始化"?

时间:2014-05-01 19:34:39

标签: c

在C中,“近初始化”错误是什么意思?

例如,以下内容将生成错误:

int a[9] = {{1,2,3},{2,3,4},{3,4,5}}

p.s为什么这个例子会产生错误?

1 个答案:

答案 0 :(得分:8)

结合我和@ luk32的评论(编辑:和@ hans-passant)。

您的错误不是错误,因为它警告您存在潜在问题。它接近(如在...附近)元素a(在“near”和“initialization”之间没有连字符,因此警告靠近警告消息中提到的元素;“近初始化”意味着该元素几乎已经完全初始化,这没有任何意义。)

int a[9] = {{1,2,3},{2,3,4},{3,4,5}}

基本上,你有一个大小为9的1D数组。但是在你的初始化中,你将它视为2D 3x3阵列。虽然它们在内存中占用相同的空间,但它们的处理方式略有不同。

要解决此问题,您必须更改定义:

int a[3][3] = {{1,2,3},{2,3,4},{3,4,5}}

或初始化:

int a[9] = {1,2,3,2,3,4,3,4,5}

信息链接:

由@ luk32提供:http://www.microchip.com/forums/m463491.aspx