gpt4 book ai didi

括号内的 C++ 指针

转载 作者:太空狗 更新时间:2023-10-29 20:37:12 25 4
gpt4 key购买 nike

我对这个语法有点困惑。

void function ( float (*points)[2]); 

这是在声明一个浮点指针数组吗?如果是这样,为什么以下代码会返回错误:

void foo( float (*points)[2]) {}

float *p[2];
foo(p); // error

float (*p)[2];
foo(p); // okay

为什么需要括号?

最佳答案

float *p[2] 定义了一个大小为 2 的 float* 数组。

float (*p)[2] 定义一个指向 float 数组的指针,大小为 2:

int main(int argc, char* argv[])
{

float* p[2];
p[0] = new float(0.0);
p[1] = new float(1.0);
std::cout << *(p[0]) << " , " << *(p[1]) << "\n";

float Q[2] = { 0.0, 1.0 };
float(*q)[2] = &Q;
std::cout << (*q)[0] << " , " << (*q)[1] << "\n";

delete p[0];
delete p[1];
}

请注意,如果 Qq 的大小不匹配,则会出现错误:

float Q[3] = { 0.0, 1.0, 2.0 };
float(*q)[2] = &Q; //error C2440: 'initializing' : cannot convert from 'float (*)[3]' to 'float (*)[2]'

关于括号内的 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553024/

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