多维数组不包含值

时间:2014-11-29 15:36:27

标签: c arrays multidimensional-array

我一直在努力查看问题所在,但无法找到。每次,数组内存的值都给出0,即使int count有效并且作为struct数据值继续计数,只有数组不保存值。

#include<stdlib.h>
#include<stdio.h>
#define SIZE 1000

struct registers
 {
   int data;     
 } registerX;

void first(int *counter, struct registers* X1, int m[][2])
{
 int value;
 printf("Enter the value for the X\n");
 scanf("%d", &value);
 X1->data = value;
 m[*counter][1] = X1->data;
 *counter = ++*counter;   
}


int main()
{
int memory[SIZE][2];
int choice;
int count = 0;
printf("Enter the instruction number:\n");

while(choice != 107)

 {

   scanf("%d", &choice);
   if(choice == 101)
   {
       memory[count][0] = 101;
       first(&count, &registerX, memory);
       printf("%d\n", memory[count][1]);
        printf("%d\n", memory[count][0]);
   } 
  }
}

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题。

首先,choice中的while(choice != 107)未初始化。要修复它,请使用do...while循环而不是while循环,因为您希望循环体在检查条件之前执行一次。

其次,*counter = ++*counter;未定义的行为具有KerrekSB points out in his comment。要解决此问题,请使用(*counter)++;

最后,在最后两个printf中打印数组的未初始化元素。原因是您在函数中增加*counter,这也会修改count中的main,因为counter是一个指向count地址的指针。