2015-04-02 58 views
0

我正在学习C中的指针,并从一个基本的想法开始:使用指针来通过并更改数组。然后打印该数组。我犯了什么错误?我正在学习C中的指针,并从一个基本的想法开始,但我一直在收到错误。我究竟做错了什么?

有人告诉我,你可以将其分配给一个指针变量经历一个数组,因为我已经做了如下:

int main(void){ 
    int i = 0; 
    char entry[40], n, p; 

    p = entry; 

    printf("Enter a sentence: "); 
    while ((n = getchar()) != '\n'){ 
    *(p + i) = n; 
    i++; 
    } 
    *(p + i) = 0; 

    printf("%s", p); 

    return 0; 
} 

我一直在尝试用这样做了一点不同的方式和可以使用一些帮助。我不断收到错误,如:

  • 赋值时将指针整数,未作铸

  • 无效的左值赋值

+5

'p = entry;':'p'是一个'char',但'entry'是一个数组....可能不是你想要的。也许你认为'p'是'char *'。即,'char entry [40],n,* p;' – mah 2015-04-02 19:54:58

+0

Welp。那是我没有抓到的一个愚蠢的错误。谢谢! – MoreFoam 2015-04-02 20:00:23

+0

没问题;我很高兴你得到了协助。我已经投票结束这个问题的“简单印刷错误”的原因。 – mah 2015-04-02 20:01:57

回答

1
  • 分配使得整数指针,未作cast

    这是指代码p = entry其中试图将一个指针(entry)分配给P,其是char类型的

  • 在分配

    无效左值这是指*(p + i) = n作为(p + i)是一个数字(在这种情况下,char可以被认为是一个int)而不是一个指针,因此不能被赋值。