#1
|
||||
|
||||
浮點數指標?
有一習題程如下:
#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 |
#2
|
|||
|
|||
c语言,写不写“(float *)”,都可以的
c++语言,不写“(float *)”,是不可以的
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 |
#4
|
|||
|
|||
若是一维阵列,阵列名是指向第0个单元的,不存在上面的问题,不论有无“(float *)”均可。
若是二维阵列,阵列名是指向第0行的,不是指向第0个单元的;必须使用“(float*)”使之指向第0个元素才可以操作。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 |