西西河

主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析

共:💬84 🌺26 新:
全看分页树展 · 主题 跟帖
家园 花一个。我觉得LZ的困惑可能来自

对于 int** x 和 int a[m][n], x[i][j]、a[i][j]、x[i]、a[i]在C语言中都是合法的表达式,于是认为二者可以套用。LZ可能不知道在C语言编译时:

(1) x[i] = *(x+i),x[i][j] = *( *(x+i) + j )

(2) a[i] = (int *)a + i*n,a[i][j] = *( (int *)a + i*n + j )

或者

(2) a[i] = (int *)(a + i),a[i][j] = *( (int *)(a + i) + j )

Example: x[0][0]=*(*(x)), a[0][0]=*( (int *)a ).

Note: a[0][0] != *(a). Why? Test yourself.

-----------更正-----------------------

上述内容本身没有错误,但作为LZ原问题的解释不合适。事实上:对于二维数组a,下面与二维指针类似的表达式也是成立的,即:a[i]=*(a+i), a[i][j]=*(*(a+i)+j),a[0][0]=**a。我在frnkl:这个问题实在很有趣里给出了一个代码示例,可以解释LZ的原问题。

非常抱歉。


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河