我被问到这个语法是什么意思:
char data[32] = {1};
Run Code Online (Sandbox Code Playgroud)
但是我不记得它做了什么.但我记得它是有效的.
有谁可以解释它的目的?
如果您根本没有初始化自动数组(本地而非静态),则数组的元素可能包含垃圾值.
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
char data[5];
for (i = 0; i < 5; i++) {
printf("data[%d] = %d\n", i, data[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
data[0] = 72
data[1] = 12
data[2] = -118
data[3] = 51
data[4] = -119
Run Code Online (Sandbox Code Playgroud)
但是,如果您初始化它,它将使用您指定的初始值设定项进行初始化.如果初始值设定项的数量小于数组中元素的总数,则其余元素将初始化为0.
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
char data[5] = {1};
for (i = 0; i < 5; i++) {
printf("data[%d] = %d\n", i, data[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
data[0] = 1
data[1] = 0
data[2] = 0
data[3] = 0
data[4] = 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7479 次 |
| 最近记录: |