我想将指针传递给多维数组,因此可以保留不复制的值。我该怎么做?我也一直跟踪int计数,它每次都会工作吗?我需要的数组是内存。结构已经在main之外声明了。
struct registers
{
int data;
} registerX, registerY;
void first(int *counter, struct registers* X1, int **m)
{
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 count = 0;
int choice;
printf("Enter the instruction number:\n");
while(choice != 107)
{
scanf("%d", &choice);
if(choice == 101)
{
memory[count][0] = 101;
first(&count, ®isterX, &memory[count][1]);
}
答案 0 :(得分:2)
函数签名应为:
void first(int *counter, struct registers* X1, int m[][2])
或等效地:
void first(int *counter, struct registers* X1, int (*m)[2])
电话应该是:
first(&count, ®isterX, memory);
答案 1 :(得分:0)
首先,除了Kerrek SB所说的,你可以替换
*counter = *counter++;
用这个
(*counter)++;
编辑:抱歉,我试图说出* counter = * counter ++有什么问题我犯了一个错误,但是我用句子*指针= *指针++得到了一些奇怪的结果。
< / LI>其次,我发现你使用的是registerX,它只是一种类型,所以你可以先这样做。
registerX *rgx = NULL;
rgx = malloc(sizeof(registerX));
并使用。
first(&count, rgx, memory);
考虑到我上面所说的,这段代码对我有用。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
typedef struct registers {
int data;
} registerX, registerY;
void first(int *counter, struct registers *X1, int m[][2]) {
int value;
printf("Enter the value for the X: ");
scanf("%d", &value);
X1->data = value;
m[*counter][1] = X1->data;
(*counter)++;
return ;
}
int main() {
int memory[SIZE][2];
int count = 0;
int choice;
registerX *rgx = NULL;
rgx = malloc(sizeof(registerX));
printf("Enter the instruction number: ");
while(choice != 107) {
scanf("%d", &choice);
if (choice == 101) {
memory[count][0] = 101;
first(&count, rgx, memory);
printf("Number %d was stored in memory[%d][%d]\n\n", memory[count-1][1], count-1, 1);
}
printf("Enter more instructions: ");
}
return 0;
}