2011-02-10 58 views
1

我一直在用C++中的作業問題掙扎。單行指針操作

問題如下:

編寫一個執行下列任務的語句。假設num1是一個浮點變量。還假定AR1 [100]和Ar 2 [100]是char類型的數組:

  1. 申報的ptr作爲指針型雙
  2. 分配可變NUM1的地址PTR的對象。
  3. 顯示ptr指向的對象的值。
  4. 將ptr指向的對象的值指定給變量num1。
  5. 顯示num1的地址。
  6. 將存儲在ar1中的字符串複製到ar2中。

我的問題是與數字2.問題是,指針是一個雙,但變量num1是一個浮點數。

我的另一個問題是,我不能看到如何不使用for循環6。

到目前爲止,我已經得到了這一點:

  1. 雙* PTR =新雙;
  2. ptr =(double *)&num1;
  3. cout < < * ptr;
  4. num1 = * ptr;
  5. COUT < < &num1;
  6. //不知道

這給了我,如果做奇怪的價值觀,但如果我聲明NUM1爲雙並更改爲2〜PTR = & NUM1一切工作正常。

請幫我解決這個問題兩天了。

+1

關於(6),請瀏覽一些庫函數。 – 2011-02-10 22:55:37

+0

總是將家庭作業標記爲「家庭作業」。並請格式化您的代碼,請使用{}按鈕或在您的源代碼前加上4個空格並相應地縮進。 – Trinidad 2011-02-10 22:56:11

+1

注意,對於(1),你只需要聲明`ptr`;你不需要用一個值來初始化它(當執行(2)時它只會導致泄漏)。關於在SO上提出作業問題的指導方針,請閱讀[「如何問及回答作業問題?」](http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-問題)。你在原始寫作中做了一個瑣碎的工作,並且達到了主要的指導原則:問題被標記爲家庭作業,你展示了你已經完成的工作,並在相當具體的問題方面尋求幫助。 – outis 2011-02-10 23:04:59

回答

1

A double一個浮點值,所以ptr = &num1應該沒問題。另一方面,double *ptr = new double;不僅聲明指向double的指針,而且還初始化它。double* ptr就足夠了;

鑄造一個float*double*可能不會產生任何有用的東西,因爲floatdouble可能有不兼容的表示(尤其是他們通常大小不同的是)。

-1

爲6:

string.h中:strcpy()strncpy()strlcpy() - 谷歌他們。

0

一切似乎都對。除了數字1.我只是說double * ptr;它沒有說實例化它,你正在創建一個內存泄漏。

6是strcpy_s(arr2,arr1);

1

請參閱:double是一個雙精度(二進制64)浮點IEEE 754,而float是由同一個標準定義的單精度(二進制32)浮點。

所以只需將num1聲明爲double。

2

doublefloat都是浮點類型。所以,如果你的老師說num1是一個「浮點類型」,你應該能夠使用double來逃避。如果你的老師說要使用float,那麼你就卡住了。

6是要求你做一些非常具體的事情。這將涉及一些谷歌搜索,但它可以作爲一個班輪完成。

2

對於這個問題:

變量float num1的地址分配給double* ptr

您確定您應該分配地址而不是值嗎?將一個變量的地址賦給一個完全不同類型的指針是沒有意義的。

你也應該知道,如果你正在使用C++爲您的標籤說,你應該更喜歡使用C++風格鑄(reinterpret_cast<type>(variable)等)使用C-風格的轉換。