English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

麻煩各位~
問題是這樣的~
今天上課的時候老師交到指標
給我們一個回家的作業如下:
汽油一公升23.5元(假設)
使用者輸入加入幾公升(整數)
輸出一共要付多少錢(公升數*23.5,輸出是浮點數float)
老師的提示:要使用兩個指標

因為輸入是整數,輸出是浮點數,所以必須要強制轉型
我知道整數強制轉型成浮點數的話是
int i;
float j;
i=(int)j;
如果是指標就是在小括號內變數後面加*
如:i=(int*)j

那如果加上乘法的運算呢?
這個是我寫的....可是輸出都是0.00000
不管是使用者輸入任何數字都是如此....
#include
main()
{
void *ptr;
void *ptr1;
int i;
scanf(\"%d\",&i);
ptr=&i;
printf(\"%f\\n\",*(float*)ptr*23.5);

}

麻煩幫我解答一下吧@@\"

2006-08-15 14:58:44 · 3 個解答 · 發問者 ? 3 in 電腦與網際網路 程式設計

3 個解答

//Power by Microsoft Visual Studio 2005//可以使用 Dev-C++ 編譯此程式#include #include int main(int argc, char *argv[]){ //=====START=====// double dblValue,dblPrice=23.5;//也可以使用 float double *ptr1,*ptr2; //因為指標所指向的資料型態為 double ptr1=&dblValue;//把變數的位址指定給指標 ptr2=&dblPrice; printf("Input Value: "); scanf("%lf",&dblValue);//float: %f printf("Sum Price: %.2f dollars.\n",(*ptr1)*(*ptr2)); //*ptr1 指標指向的資料內容 //=====END=====// system("PAUSE"); return 0;}

2006-08-15 20:54:38 補充:
指標 pointer 與 pointer 指向的資料 data 型態要相同。
指標初始化
int *ptr=NULL;
錯誤宣告: void *ptr

2006-08-15 16:47:55 · answer #1 · answered by Big_John-tw 7 · 0 0

因為老師想讓我們練習指標~所以叫我們使用指標做這個程式~其實我也覺得這樣很費工夫@@"

2006-08-16 12:30:10 · answer #2 · answered by ? 3 · 0 0

有void *prt 這種宣告.

2006-08-16 09:40:43 補充:
int i=0;
void *ptr=&i;
float x=*(float*)ptr; // 在此並不是把i 轉型成float. 這樣的寫法是, 記算出i 的address (&i)放到ptr中 把此address 轉換成float* 型態的指標. 然後去取值. 其結果是.電腦直接把ptr 指向的資料當做是float 型別.

2006-08-16 09:52:52 補充:
在C/C++ 中. 指標型別只能做+,+=,++, -,-=,--這類的運算, 無法做乘, 除.
對指標做+1 表示指向下一個資料
-1 表示指向前一個.

另void* 型別的指標更本無法做任何運算. 因為compiler 無法得知void* 指向的型別size 為多少.也就無法記算出下一個(+1) 資料的address 是多少.
因此您可以想向.void* 型別是用來存放一個address

2006-08-16 09:56:59 補充:
事實上您的作業跟本不需要用到指標
只要這樣寫既可
#include
#include
int main(int argc, char *argv[]){

double dblValue;
printf("Input Value: ");
scanf("%lf",&dblValue);
printf("Sum Price: %.2f dollars.\n",dblValue*23.5);

system("PAUSE");
return 0;
}
(sorry 修改了耗呆小綿羊的程式)

2006-08-15 19:49:13 · answer #3 · answered by SiYu 5 · 0 0

fedest.com, questions and answers