为什么这段代码输出初始化器中的第一个元素?

时间:2016-01-14 14:15:26

标签: c initialization initializer-list initializer

我的一位朋友今天发给我这个代码:

#include <stdio.h>

int main()
{
    char *s = { "one", "two", "three", "four", "five" };
    puts(s);
}

它的输出是:

one

据我所知,像"one"这样的字符串被翻译为C中的地址,它们是常量。因此,"one", "two", "three", "four", "five"由于其中的逗号运算符而等于"five"。因此{ "one", "two", "three", "four", "five" }不应该等于{ "five" },创建char *s="five"

1 个答案:

答案 0 :(得分:1)

此代码中的任何位置都没有逗号运算符。相反,逗号是初始化列表中的分隔符。

编译器会将char指针初始化为列表中的第一个文字,并在初始化程序&#34;中发出类似&#34;多余元素的警告,表示列表中的其余元素已被丢弃。

正如评论中已经提到的,你朋友的意图可能是

var dataSource = new DevExpress.data.DataSource({
    store: [/* your data */],
    filter: [/* your filter */]
});

$("#list").dxList({
    // list options
    dataSource: dataSource
});

给出s [0] =&#34;一个&#34;,s [1] =&#34;两个&#34;等等。