如何在C中确定数组中的元素数
我是学C语言的新手 例如,我想知道数组中的元素数如何在C中确定数组中的元素数,c,arrays,C,Arrays,我是学C语言的新手 例如,我想知道数组中的元素数 int MyArray[80] = {50, 845, 584}; n = sizeof(MyArray)/sizeof(MyArray[0]); // This will give me 80. 但是我只想要{}内部的元素数量,因为我在上面初始化了它,它有3个元素(50845584),那么我如何通过代码来计算它们呢 另一个问题: 如何创建一个空数组,以便自己添加元素并使用for循环打印所有元素,我已经尝试了以下方法: int i; int M
int MyArray[80] = {50, 845, 584};
n = sizeof(MyArray)/sizeof(MyArray[0]); // This will give me 80.
但是我只想要{}内部的元素数量,因为我在上面初始化了它,它有3个元素(50845584),那么我如何通过代码来计算它们呢
另一个问题:
如何创建一个空数组,以便自己添加元素并使用for循环打印所有元素,我已经尝试了以下方法:
int i;
int MyArray[80] = {};
MyArray[0] = 50;
MyArray[1] = 584;
MyArray[2] = 784;
for(i=0; i<=sizeof(MyArray); i++){
printf("Array Element[%d] is: %d", i, MyArray[i]);
}
inti;
int MyArray[80]={};
MyArray[0]=50;
MyArray[1]=584;
MyArray[2]=784;
对于(i=0;i如果初始化的数组的元素少于声明保留的数组,则剩余的元素将默认初始化。对于整数,这意味着它们将被置零
假设初始化列表中没有零,那么可以通过检查数组中的第一个零(直到数组的长度)来检查初始化列表的长度
或者,如果数组大小应为常量,则应将大小指定为[]
,这将使其与初始化列表一样长,不再重复
我只想要{}内的元素数
试一试
使用预处理器的丑陋方式:
#include <stdio.h>
#define NARGS_SEQ(_1,_2,_3,_4,_5,_6,_7,_8,N,...) N
#define NARGS(...) NARGS_SEQ(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1)
#define init_array(arr, ...) NARGS(__VA_ARGS__); arr = {__VA_ARGS__}
int main(void)
{
int n = init_array(int my_array[80], 50, 845, 584);
printf("%d\n", n);
return 0;
}
输出:
3
请注意,此版本仅限于初始值设定项中的N
元素。很抱歉,但您需要记住自己,使用变量。除非您维护一个变量以了解上次使用的元素,否则您不能使用变量。然而,我通过执行另一篇文章中的以下代码来修复此问题:#include#define NUM_ELEMS(a)(sizeof(a)/sizeof 0[a])main()第二,你不需要。如果你不需要全部80个元素,就不要指定大小。如果你确实需要全部80个元素,当sizeof()
告诉你“值80个整数”时,你不能抱怨。请不要一下子问几个问题。太宽了。反正是颠倒过来的。
#include <stdio.h>
#define NARGS_SEQ(_1,_2,_3,_4,_5,_6,_7,_8,N,...) N
#define NARGS(...) NARGS_SEQ(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1)
#define init_array(arr, ...) NARGS(__VA_ARGS__); arr = {__VA_ARGS__}
int main(void)
{
int n = init_array(int my_array[80], 50, 845, 584);
printf("%d\n", n);
return 0;
}
int main(void)
{
int n = 3; int my_array[80] = {50, 845, 584};
printf("%d\n", n);
return 0;
}
3