我有一个数组,其中包含指向其他数组的指针.我想打印所有值,但我无法获得特定数组的sizeof.我究竟做错了什么?
int main(void){
int i, j;
float T1[4]={1.1, 1.2, 1.3, 1.4};
float T2[6]={2.1, 2.2, 2.3, 2.4, 2.5, 2.6};
float T3[3]={3.1, 3.2, 3.3};
float T4[2]={4.1, 4.2};
float T5[4]={5.1, 5.2, 5.3, 5.4};
float *TAB[5]={T1, T2, T3, T4, T5};
for(i=0; i<5; i++){
for(j=0; j<sizeof(TAB[i])/(sizeof (int)); j++){
printf("%f ", *(TAB[i]+j));
}
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
你不能.一旦数组衰减到指针,您就不再拥有有关数组大小的信息.你需要以其他方式跟踪它.
在您显示代码的情况下,您可以拥有第二个数组TAB_SIZES,其中包含指向的数组的大小TAB.
还要记住,对于任何数组或指针p和索引i,表达式p[i]都等于*(p + i).这意味着你不必这样做*(TAB[i]+j).相反TAB[i][j],这对大多数人来说更"自然".