網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2014-06-20, 03:44 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,057
預設 浮點數指標?

有一習題程如下:
#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
回覆時引用此篇文章
  #2  
舊 2014-06-20, 05:37 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

c语言,写不写“(float *)”,都可以的
c++语言,不写“(float *)”,是不可以的
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #3  
舊 2014-06-20, 05:41 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,057
預設

引用:
作者: yumi 查看文章
c语言,写不写“(float *)”,都可以的
c++语言,不写“(float *)”,是不可以的
那請問一下為何這二個都已宣告是 float了,還要再f=(float*)x一次呢?
那如果是 int ,double 呢?

還有,這個 (float *)是什麼意思,我還一直沒有搞懂?

thanks
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #4  
舊 2014-06-20, 06:44 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

若是一维阵列,阵列名是指向第0个单元的,不存在上面的问题,不论有无“(float *)”均可。
若是二维阵列,阵列名是指向第0行的,不是指向第0个单元的;必须使用“(float*)”使之指向第0个元素才可以操作。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #5  
舊 2014-06-20, 06:55 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,057
預設

引用:
若是二维阵列,阵列名是指向第0行的,不是指向第0个单元的
這句話我聽懂了。

引用:
必须使用“(float*)”使之指向第0个元素才可以操作。
這句話還是不懂,為何float* 和 使之指向第0个元素 有關呢?

而這個float是指第0個元素是float嗎?不是一開始就已設定這整個陣列是float了?
__________________
咖啡走路
微博


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


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 01:51 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.