C 如何知道阵列的下一个自由位置

C 如何知道阵列的下一个自由位置,c,arrays,C,Arrays,在字符串中,由于“\0”,我们可以知道字符串的最后一个位置,但如何知道数组的下一个自由位置呢。我把代码放在这里: #include <stdio.h> int main(){ int notes[10]; int i, usuari; printf("Put a number"); scanf("%i", &usuari); for (i=0;i<usuari;i++){ scanf("%i", &n

在字符串中,由于“\0”,我们可以知道字符串的最后一个位置,但如何知道数组的下一个自由位置呢。我把代码放在这里:

#include <stdio.h>

int main(){
    int notes[10];
    int i, usuari;

    printf("Put a number");
    scanf("%i", &usuari);

    for (i=0;i<usuari;i++){
        scanf("%i", &notes[i]);
    }
}
#包括
int main(){
国际注释[10];
inti,usuari;
printf(“输入一个数字”);
scanf(“%i”和“usuari”);

对于(i=0;i您通常会将数组初始化为一些永远不会输入的值,例如-1。因此,您可以定义如下注释:

int notes[10] = {-1};
int notes[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,};
然后你可以在使用它之前检查notes[i]=-1。但是,我只是猜测你所说的
未使用的
是什么意思

编辑:

如上所述,上面只初始化第一个元素。实际上,您必须像这样初始化注释:

int notes[10] = {-1};
int notes[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,};

或者在循环中

使用一个终端值,类似于C中的字符串使用终端值来指示结束…或者存储下一个值的位置,类似于循环知道在哪里存储下一个值

假设您将
i
的初始化移动到循环之外,并将用户输入包装到嵌套循环中,如下所示:

#include <stdio.h>

int main(){
    int notes[10];
    int i = 0, usuari;

    for (;;) {
        printf("Put a number");
        scanf("%i", &usuari);

        for (;i<usuari;i++){
            scanf("%i", &notes[i]);
        }
    }
}
#包括
int main(){
国际注释[10];
int i=0,通常为;
对于(;;){
printf(“输入一个数字”);
scanf(“%i”和“usuari”);

对于(;iAn数组没有“自由位置”。C没有字符串类型。数组的使用方式都是惯例。想想看!那么,我如何在数组结束的数字旁边打印自由位置?定义单词
自由
?不清楚您想要什么。数组以
注释结束[9]
显然。没有数组通过它,默认情况下也没有“自由位置”(这些位置看起来像什么?)。你似乎对数组是什么感到困惑。你可以从相应章节中的任何C语言书中学习到这一点。请注意,只有
注释[0]
将被初始化为
-1
。C99对初始化器的改进中一个更令人费解的疏忽是在初始化器中重复一个值多次的能力。这是非常奇怪的,因为Fortran“永远”拥有它(无论如何,从Fortran 66开始)。这是正确的。你必须这样初始化它:
int notes[10]={1,-1,-1,-1,-1,-1,-1,-1,-1,};