【问题标题】:Having trouble with array struct in CC中的数组结构有问题
【发布时间】:2014-03-28 12:14:54
【问题描述】:

我收到一条错误消息:“声明说明符中有两种或多种数据类型” 我读过当人们忘记输入“;”时会发生这种情况在结构的末尾,但如您所见,它有“;”。那么,有没有人知道什么会产生这个错误?

#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;
}

【问题讨论】:

    标签: c arrays types struct modifier


    【解决方案1】:

    就是这一行:

        arrayStruct char array[10];
    

    应该是:

        arrayStruct array[10];
    

    【讨论】:

    • -1。简单地发布解决方案而不解释它是不可接受的。
    • @DanielKamilKozar 是的,在这种情况下。否则他应该写什么? “不要在语言规范之外写愚蠢的语法错误”没有帮助。
    【解决方案2】:

    需要进行以下更改。

    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 *。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2018-03-10
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多