2014-01-15 61 views
-1
#include<stdio.h> 
int main() 
{ 
     int N, i,j,k; 
     int uglyNumber[1500]={1}; 
     int *i=uglyNumber; 
     int *j=uglyNumber; 
     int *k=uglyNumber; 

     while(scanf("%d",&N)!=EOF) 
     printf("%d\n",uglyNumber[N]); 
    } 

產生編譯器錯誤:使用數組指針產生錯誤

int differs in levels of indirection from int * 

爲什麼不能使用指針來指代陣列uglyNumber[]

+0

*您在哪裏*得到錯誤?在哪一行?這是你得到的全部嗎?沒有更多的文字?如果有,請編輯問題以包含* all *錯誤/警告消息。 –

+2

你也在redifining i,j,k。你的代碼無需返回就可以讀取一個函數和一個函數。 – Oz123

+0

哦,如果你給出了一個不是'scanf'的整數,它將返回零。另外,如果用戶輸入負數,會發生什麼? –

回答

-1

請檢查您是否初始化了N的值。它可能是垃圾。

+3

'scanf()'**將**新值寫入變量。不要擔心現有的價值。 –

5

我想你會得到你的錯誤,因爲你定義了ijk兩次。代碼的其他部分應該運行。

+0

是啊!謝謝! – muddytu

2

不會編譯。 您已經將int i,j,k聲明爲int。

所以你不能申報*i,*j,*k

*i,*j,*k更改爲*ii,*jj,*kk後編譯即可運行。

0

指針I,J &ķ應該只指向數組的一個元素,即uglyNumber [0],uglyNumber [1] &等..

另外指針是存儲的元素的地址的變量陣列。要存儲,您必須使用&符號,即* i = & uglyNumber [0]

+0

賦值'i =&uglyNumber [0]'與賦值'i = uglyNumber'的每種方式都是等價的。 –