【发布时间】:2021-12-04 15:14:04
【问题描述】:
我知道如果我添加数组 st 和 st2 以在内存中为其提供空间,然后将其添加到指针数组中,这应该不是问题:
/* works */
int st[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int st2[]= {0,31,29,31,30,31,30,31,31,30,31,30,31};
int *day_tab[]= {
st,
st2
};
但是如果没有先在内存中给它空间,为什么字符串特别有效? 下面的代码给出了一个错误:
int *day_tab[]= {
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
下面的代码也是这样:
char *day_tab[]= {
{'0','1','\0'},
{'0','1','\0'}
};
但下面的代码有效
char *day_tab[]= {
"01",
"01"
};
【问题讨论】:
-
“我明白如果我添加数组以在内存中给它空间” - “添加数组”是什么意思?
-
让我编辑问题
-
"0"是一个具有静态存储持续时间的数组。括号列表不是任何类型的对象(它们只为您正在初始化的任何内容提供初始值) -
再次编辑。谢谢@MM。如果可能,请您详细说明。
-
@hamzasiddiq 你还没有解释“添加数组”是什么意思。
标签: arrays c string pointers character