在C中遇到数组结构有问题

时间:2014-03-28 12:14:54

标签: c arrays types struct modifier

我收到一条错误消息:“声明说明符中有两个或更多数据类型” 我已经读到当人们忘记放“”时会发生这种情况在结构的最后,但正如你所看到的,它有“;”。那么,有没有人知道什么可以产生这个错误?

#include <stdio.h>
#include <stdlib.h>

typedef struct{
     char valorArray;
} arrayStruct; 

int main(void){

  arrayStruct char array[10];
  int i;
  int *pA;
  int *pP;
  for (i = 0; i < 10; i++){
      printf("Digite uma letra qualquer:\n");
      scanf("%c", &(array[i].valorArray));
      scanf("\n");

      printf("a letra na casa %d do array eh: %c\n", i, array[i].valorArray); 

      pA = &array[i].valorArray;
      printf("o endereco da posicao atual eh: %d\n", pA);

      pP = &array[i+1].valorArray;
      printf("o endereco da proxima posicao eh: %d\n\n\n\n", pP);
  } 

  system("PAUSE");  
  return 0;
}

2 个答案:

答案 0 :(得分:2)

这一行:

    arrayStruct char array[10];

应该是:

    arrayStruct array[10];

答案 1 :(得分:0)

需要进行以下更改。

arrayStruct char array[10];

更改为,因为arrayStruct是用户定义的数据类型:

arrayStruct array[10]; // example int arr[10] - int is a data type. 

我觉得应该做的其他逻辑改变是:

int *pA; // change to char *pA
int *pP; // change to char *pB
      pA = &array[i].valorArray;
      printf("o endereco da posicao atual eh: %d\n", pA);

      pP = &array[i+1].valorArray;
      printf("o endereco da proxima posicao eh: %d\n\n\n\n", pP);

您使用char数据类型定义了valorArray,因此pA和pP应该是char *而不是int *。

希望这有帮助。