2012-09-23 27 views
0

我在C程序中有錯誤。它表示%d需要int,但讀取的是int *。我之前使用了一些mod10函數來分隔4位數字。在操作每個數字之後,除了除法和其他mod10之外,我把這些數字作爲一個4位整數重新組合在一起,然後讓它打印出來。在printf行中使用%d時,我得到一個錯誤,說%d正在尋找一個'int',並且它找到'int *'。究竟是什麼'int *',以及關於這裏出了什麼問題的任何想法?我在C程序中有錯誤。它表示%d需要int,但讀取的是int *。什麼是int *?

+6

可以請你出示你的代碼嗎? – codingbiz

回答

0

向我們展示(通過編輯您的問題)它所抱怨的代碼行。

要回答你的問題,int*是指向int的指針。例如,給定

int i; 
int *p; 

i*pint類型,並且&ipint*類型。

查看C教材中的「指針」。

另外,comp.lang.c FAQ是一個很好的資源;第4節討論指針。 (但它主要是爲了回答你在開始理解概念之後會遇到的問題。)

3

int *pointer to an int

爲了得到一個指針的值在變量名前一個變量使用*。 要獲取變量的地址,請在名稱前使用&

示例;

int c = 1, d= 0; 
int *e = &c;  // assign address of c to pointer e 
d = *e;   // assign value that c points to, to d 
printf("%d",d); // print int value of d 
printf("%d",*e); // same output as line above. print value c points to 

Here是一個關於指針的小教程。

+0

「要將指針的值賦給變量,請使用'* var'」 - 這還不清楚。什麼是'var'?什麼是分配給什麼? –

1

一個int*是一個指針爲一個整數而不是一個整數本身。 C有指針的概念,它是可以指向其他變量的變量,允許你做各種奇妙的事情。

沒有看到你的代碼,這是一個有點難以看到你做了什麼錯,但你可以通過聲明它,以便獲得一個指針:

int * pInt; 

,或者使用運營商的地址的:

doSomethingWith (&myInt); 
1

int *是一個指向整數的指針,而不是整數變量。這意味着,不是持有某些數據,而是持有對某些數據所在的內存位置的引用。如果你想訪問它引用的位置的數據,那麼你需要取消引用指針。

要做到這一點,你這樣做:

int a = 100; //an integer variable 
int* b= &a; //b is now the location of a in memory 
cout << *b; //This dereferences b to the data in a, and prints 100 

希望這有助於任何更正任何人請讓我知道。

0

int *是一個指向整數的指針。

請發佈標記的代碼行,錯誤消息和聲明變量的行。

相關問題