有点难以理解你在问什么,但答案基本上是一样的。如果您想在数据结构中保存 n[0] 到 n[9] 的值以便循环遍历这些值,那么直接选择是 array(您可以使用链表、树等)但我不认为你想要那些)。该数组提供了将所有值放置在顺序内存块中的好处。这允许您以多种方式迭代(循环)这些值。示例:
#include <stdio.h>
#define MAX 10
void prnarray (int *a, int n);
int main (void) {
int i = 0;
int n[] = {0,1,2,3,4,5,6,7,8,9};
printf ("array before loop:\n\n");
prnarray (n, MAX);
for (i = 0; i < MAX; i++)
if (n[i] == 1)
n[i] += 1;
printf ("\narray after loop:\n\n");
prnarray (n, MAX);
return 0;
}
void prnarray (int *a, int n)
{
int i;
for (i = 0; i < n; i++)
printf (" array[%2d] : %d\n", i, a[i]);
}
输出
$ ./bin/array09
array before loop:
array[ 0] : 0
array[ 1] : 1
array[ 2] : 2
array[ 3] : 3
array[ 4] : 4
array[ 5] : 5
array[ 6] : 6
array[ 7] : 7
array[ 8] : 8
array[ 9] : 9
array after loop:
array[ 0] : 0
array[ 1] : 2
array[ 2] : 2
array[ 3] : 3
array[ 4] : 4
array[ 5] : 5
array[ 6] : 6
array[ 7] : 7
array[ 8] : 8
array[ 9] : 9
另一方面,如果您只是将值分配给各个变量n0, n1, n2, ...,那么您唯一的选择是使用某种类型的list 或tree 构造来提供各个变量之间的关联(内存地点)。鉴于您的问题,这似乎远远超出了您所问的范围。可以这么说,如果你这样做了:
#include <stdio.h>
#define MAX 10
int main (void) {
int i = 0;
int n0 = 0;
int n1 = 1;
int n2 = 2;
int n3 = 3;
int n4 = 4;
int n5 = 5;
int n6 = 6;
int n7 = 7;
int n8 = 8;
int n9 = 9;
/* you are stuck - no way to loop,
no guarantee n0 - n9 are contiguous
in memory. (advanced datastruct needed)
*/
return 0;
}
重新开始...