C语言中的数组
我是C编程语言的初学者,因此需要对此进行解释:C语言中的数组,c,C,我是C编程语言的初学者,因此需要对此进行解释: #include <stdio.h> #include <stdlib.h> int main() { int NUM[10]; int i,index; for(i=0 ; i<8 ; i++){ NUM[index]=i; index++; } printf("this is the number %d\n\n",NUM);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int NUM[10];
int i,index;
for(i=0 ; i<8 ; i++){
NUM[index]=i;
index++;
}
printf("this is the number %d\n\n",NUM);
return 0;
}
为什么控制台中的数字不正确?不清楚您想做什么。但是,如果要打印数组中的元素,则不能编写一条printf语句并期望按顺序打印出元素 要按顺序打印数组的元素,必须使用for循环。像这样的-
for (i=0; i<8; i++)
{
printf("%d", num[i]);
}
for(i=0;iprintf(“这是数字%d\n\n”,NUM);
将NUM
传递到printf
以使用%d
转换说明符进行格式化
NUM
是一个数组。在此使用中,它会自动转换为其第一个元素的地址。%d
希望传递int
。地址不是int
。由于这种不匹配,此代码的行为不由C标准定义。充其量,printf
将打印地址ss格式为十进制
要打印数组的元素,必须编写一个循环来打印每个元素,方法是将NUM[i]
传递到printf
,以使用%d
进行格式化。您可以使用:
for (int i = 0; i < 8; ++i)
printf("NUM[%d] = %d.\n", i, NUM[i]);
for(int i=0;i<8;++i)
printf(“NUM[%d]=%d.\n”,i,NUM[i]);
所以这里有很多问题。首先,您初始化一个整数区域(NUM),然后尝试在末尾打印它。此外,您初始化i,但不初始化索引。这将导致填充NUM的值与您期望的值不同,因为您的起点是“垃圾”
下面我包含了一个稍微修改过的版本。请注意,在初始化索引后,我给它赋值,使起点为零,就像I
一样。我在循环中做了一个稍微修改,我有for(I=0;I
。这里唯一的区别不是迭代任意次数(在您的例子中是8次),而是根据数组的总长度(以字节为单位)除以每个元素的长度(以字节为单位)来迭代循环这将生成它包含的整数总数。然后,我打印区域中的每个元素,因为它被分配了printf(“这是数字%d\n\n”,NUM[I]);
#包括
#包括
int main()
{
int NUM[10];
int i,索引;
指数=0;
对于(i=0;i
index
未初始化,因此其值是不确定的。因此,访问其值会产生未定义的行为。将其用作数组索引(分配给NUM[index]
的第一件事)并递增(index++
)两者都通过访问索引的值来工作。在循环之前将索引初始化为有效值(例如0
)。此外,NUM
是一个数组,而不是单个int
。使用%d
打印它会告诉printf()
假设NUM
不是int
(即存在类型不匹配)因此printf()
语句也具有未定义的行为。
for (int i = 0; i < 8; ++i)
printf("NUM[%d] = %d.\n", i, NUM[i]);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int NUM[10];
int i,index;
index = 0;
for(i=0 ; i < sizeof(NUM)/sizeof(NUM[0]); i++){
NUM[index]=i;
printf("this is the number %d\n\n",NUM[i]);
index++;
}
return 0;
}