gpt4 book ai didi

C——指向指针数组的指针

转载 作者:行者123 更新时间:2023-12-02 08:14:35 27 4
gpt4 key购买 nike

我正在学习 C,因为我陷入了指针章节。特别是指向指针( **p )部分的指针,用于处理二维数组。

以下函数生成一个 2 维数组,其所有元素都等于 0 。

double** example(int rows, int cols){
static double tr[rows][cols];
for(int i = 0; i < rows; i++)
for(int j = 0; j < cols; j++)
tr[j][i] = 0;
return tr;
}
int main(void){

double **tr;
int m = 2 ;
int n = 2 ;

tr = transpose(m, n);
return 0;}

函数返回的 tr 是指向 tr 数组第一个元素的“双指针”吗?或者说它的值(value)?另外,现在(调用函数后)如何访问 **tr 指向的内存部分的数组元素?

有人可以解释一下这一切是如何运作的吗?或者向我推荐一篇文章或书中的一个章节?

最佳答案

在 C 语言中,函数必须返回与函数类型相同的值/变量。在此示例中,tr 将是一个双指针,它指向第一行。

当使用双指针创建二维数组时,您实际上是在创建一个指向指针数组的指针,数组中的指针指向存储在每行中的字符串/值。双指针将指向指针数组中的第一个指针,该指针将指向第一行中的第一个元素。

您可以使用括号表示法访问二维数组中的值,例如tr[行][列],或作为 *(*(tr + 行) + 列)。对于第二种表示法,*(tr + row) 将访问指向所需行的指针,然后您可以使用 *(found_row + column) 引用该值>,为您提供所需列中的元素。

关于C——指向指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43144857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com