主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析
对于 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 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
🙂指针里面放的就是地址 七月半 字608 2009-02-21 12:01:34
🙂说得不错... 熊熊熊熊 字0 2009-02-21 12:43:47
🙂int **x是用来实现指针数组这类功能的 1 autoeagle 字96 2009-02-20 16:32:40
🙂花一个。我觉得LZ的困惑可能来自
😜“指针数组”vs“数组指针” 七月半 字64 2009-02-21 05:45:35
🙂del 熊熊熊熊 字0 2009-02-20 13:45:07
🙂使用指针的时候自己一定要清楚p+1到底是加了几 七月半 字320 2009-02-19 20:14:55
🙂del 熊熊熊熊 字1 2009-02-20 13:59:21