gpt4 book ai didi

c++ - 双指针和它们之间的括号

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:19 27 4
gpt4 key购买 nike

我正在学习 c 指针,我按照 c4learn 作为教程。在 pointer to array of string部分,其中包含以下代码:

char *arr[4] = {"C","C++","Java","VBA"};
char *(*ptr)[4] = &arr;

我没看懂

*(*ptr)[4]

?是不是可以像这样使用它

**ptr

代替?

更新1:

目前我在下一节,function pointer我又看到了类似的代码:

void *(*ptr)();

最佳答案

char *(*ptr)[4]

是指向长度为 4 的指针数组的指针,指向 char (char*)。因为arr是一个长度为4char*数组,所以ptr可以指向arr 为它分配 arr 的地址,&arr

void *(*ptr)();

是指向返回 void* 的无参数函数的指针。例如

void* fun();     // function

void *(*ptr)(); // function pointer

p = fun; // function pointer points to function

C 语法可能非常困惑,因此通过一些示例可能更容易说明这一点。请注意,T; 之间的空格没有区别。

T name[N];     // size N array of T
T * name[N]; // size N array of pointer to T
T (*name)[N]; // pointer to size N array of T
T ** name[N]; // size N array of pointer to pointer to T
T *(*name)[N]; // pointer to size N array of pointer to T

关于c++ - 双指针和它们之间的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29161636/

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