查看單個文章
  #1  
舊 2014-06-20, 03:44 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,019
預設 浮點數指標?

有一習題程如下:
#include <stdio.h>

int main(void)
{
float x[3][3]={1.1,2.2,3.3,
4.4,5.5,6.6,7.7,8.8,9.9};
float *p;
p=(float *)x;
printf("%f",*(p+(3*1)+1));
return 0;
}

有一個浮點數二維陣列 x[3][3],要求出第二列第二個元素的值 x[1][1]。
書上說,
引用:
將x強制轉型成(float *)是必須的,因為這個指標的運算是相對於浮點數指標而言。然而,由x產生的指標型態卻是浮點數的二維陣列,因此必須強制轉型。
這段話不知是翻譯的問題還是怎樣,我是有看沒有懂,但大致知道說它要把 x 陣列指給p時,要來這麼一個 p=(float *)x。

我的疑問是,x[3][3]本來不就已宣告是float了嗎?而*p也是宣告為float,二者型態相符何必再來轉一次?
而且我跑程式發現,無論是p=(float *)x或者照我直覺的p=x,跑出來的答案都是一樣而且正確的?

而如果這個得強制轉型,那其他int , double等等也要強制轉型嗎?一維陣列呢?還是二維陣列以上才如此?

還請先進指教一下?

thanks
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章