浮點數指標?
有一習題程如下:
#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[3][3]本來不就已宣告是float了嗎?而*p也是宣告為float,二者型態相符何必再來轉一次? 而且我跑程式發現,無論是p=(float *)x或者照我直覺的p=x,跑出來的答案都是一樣而且正確的? 而如果這個得強制轉型,那其他int , double等等也要強制轉型嗎?一維陣列呢?還是二維陣列以上才如此? 還請先進指教一下? thanks:bow |
c语言,写不写“(float *)”,都可以的
c++语言,不写“(float *)”,是不可以的 |
引用:
那如果是 int ,double 呢? 還有,這個 (float *)是什麼意思,我還一直沒有搞懂?:XD: thanks |
若是一维阵列,阵列名是指向第0个单元的,不存在上面的问题,不论有无“(float *)”均可。
若是二维阵列,阵列名是指向第0行的,不是指向第0个单元的;必须使用“(float*)”使之指向第0个元素才可以操作。 |
引用:
引用:
而這個float是指第0個元素是float嗎?不是一開始就已設定這整個陣列是float了? |
所有時間均為 +8。現在的時間是 08:27 PM。 |
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.