我一直在努力查看问题所在,但无法找到。每次,数组内存的值都给出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, ®isterX, memory);
printf("%d\n", memory[count][1]);
printf("%d\n", memory[count][0]);
}
}
}
答案 0 :(得分:1)
您的代码中存在一些问题。
首先,choice
中的while(choice != 107)
未初始化。要修复它,请使用do...while
循环而不是while
循环,因为您希望循环体在检查条件之前执行一次。
其次,*counter = ++*counter;
未定义的行为具有KerrekSB points out in his comment。要解决此问题,请使用(*counter)++;
。
最后,在最后两个printf
中打印数组的未初始化元素。原因是您在函数中增加*counter
,这也会修改count
中的main
,因为counter
是一个指向count
地址的指针。