C - 如何将整数值插入数组中

时间:2013-02-05 22:42:53

标签: c

我对此代码有疑问:

主要:

#include <stdio.h>
#include <stdlib.h>
#include "Function.h"
int main()
{

int B[9]; 

saisie_B_M(&B[9]);

return 0;

}

Function.c

void saisie_B_M(int B[9])
{

int i;

for(i=0; i<8; i++)
{
    printf("Une cellule morte ayant %d voisins sera t-elle morte ou vivante à la génération suivante ? \n", i);
    scanf("%d", &B[i]);
        }
    }

function.h

#ifndef Function_H_INCLUDED
#define Function_H_INCLUDED
void saisie_B_M(int B[9]);
#endif // Function_H_INCLUDED

原理很简单,它是一个9的数组,我只是在表的每个单元格中返回一个值。但最后有一个错误,我不知道编译器为什么不显示消息。

3 个答案:

答案 0 :(得分:4)

问题是当您使用

调用函数时
  

saisie_B_M(和B [9]);

应该是

  

saisie_B_M(B);

在第一种情况下,您给出一个数组但从第9个偏移量B[9]开始。所以你的函数将在9日开始迭代,然后是10日,11日,12日...行为未定义。

答案 1 :(得分:4)

扩展@Miguel Prz的答案,如果你想从第一个元素开始,那么你需要传递对数组中第一个元素的引用:saisie_B_M(&B[0])或者你可以使用{ {1}}。

答案 2 :(得分:1)

C中的数组是零索引的,因此B [9]具有0..8范围内的元素。这是无效的:

saisie_B_M(&B[9]);

如果你想将指针传递给你需要使用的最后一个元素:

saisie_B_M(&B[8]);

但似乎你需要完整的数组,所以将&amp; B [0](或简称B)传递给saisie_B_M函数。你的“for”循环也应改为:

for(i=0; i<9; i++) {
/* ... */
}