gpt4 book ai didi

c - *arr[] 是什么意思?

转载 作者:行者123 更新时间:2023-11-30 21:41:10 27 4
gpt4 key购买 nike

我在之前的考试中得到了这段代码,这是我第一次看到这个*arr[] 。这意味着什么?它是矩阵还是数组?它包含什么?

#include <stdio.h>
void f2(int **a, int x, int y);
int main()
{
int m[3][4] = {{7,12,11,21 }, {20,1,2,3}, {33,42,11,50}};
int *arr[] = { m[0], m[1], m[2] };
f2(arr, 3, 4);
_getch();
return 0;
}

void f2(int **a, int x, int y)
{
if (x > 0)
{
int i, j = 0, *p = a[x - 1];
for (i = 0; i < y; i++)
{
if (!(p[i] % 3))
printf("%d ", p[i]);
}
f2(a, x - 1, y);
}
else
printf("\n");
}

最佳答案

what does *arr[] mean?

作为独立表达式*arr[] 无效。

对于变量定义,这里有两种含义,具体取决于此类表达式出现的上下文:

  1. 带有初始化程序的变量定义(根据OP的代码片段)

    int * arr[] = { m[0], m[1], m[2] };

    这定义了一个指向 int指针数组,其元素数量由其初始值设定项中的元素数量决定。在上面的示例中,arr 将包含三个元素。

  2. 函数参数列表中的变量定义

    如果像这样使用,那就是在函数声明/定义内部

    void foo(int * arr[]);

    它实际上定义了一个int **,一个指向int指针指针。在函数声明/定义的上下文中,int * arr[]int ** arr 是等效的,或更通用的 T*[]等于T**

要明确说明这一点:没有情况下,int * arr[]定义了任何int

关于c - *arr[] 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38280914/

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