相关疑难解决方法(0)

指向数组/指针数组的C指针消歧

以下声明之间有什么区别:

int* arr1[8];
int (*arr2)[8];
int *(arr3[8]);
Run Code Online (Sandbox Code Playgroud)

理解更复杂的声明的一般规则是什么?

c arrays pointers variable-declaration

451
推荐指数
6
解决办法
38万
查看次数

为什么`int(*array)[10] = malloc(...);`有效的C代码?

我最近遇到了以下情况:

int ( *array )[10] = malloc(...);
Run Code Online (Sandbox Code Playgroud)

基于我对C语法和语法的理解,这看起来像废话.看起来像正在创建(并初始化)一个数组,其中取消引用指针的值作为其标识符.

我理解指向数组的指针,并且通常至少使用malloc()在堆上分配它们.例如,这是有道理的:

int *array = malloc(sizeof (int*) * 10);
Run Code Online (Sandbox Code Playgroud)

...但是,第一个例子看起来像不应该编译的乱码.显然,我错过了一些东西.

当我学习C时,我觉得我看到了回来的东西,但谷歌搜索并没有帮助我理解.使用术语"指针","解除引用"和"初始化"进行搜索显然会给结果带来污染,这些结果会跟踪人们如何跟踪解除引用等等.我希望人类可以帮助我.

c arrays malloc syntax pointers

6
推荐指数
3
解决办法
813
查看次数

理解C++中的声明

我正在简单地阅读C++,并且遇到了一段我不理解的参考和指针代码.

代码是void (* fn) (int& a, int* b) = add;.据我所知,它不会影响程序本身,但想知道这段代码的作用.

#include <iostream>
using namespace std;

void add (int& a, int* b)
{
    cout << "Total: " << (a+ *b) << endl;
}

int main()
{
    int num = 100, sum = 200;
    int rNum = num;
    int* ptr = &num;

    void (* fn) (int& a, int* b) = add;

    cout << "reference: " << rNum << endl;
    cout << "pointer: " << *ptr << endl;

    ptr = &sum; …
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference

5
推荐指数
2
解决办法
194
查看次数

标签 统计

pointers ×3

arrays ×2

c ×2

c++ ×1

malloc ×1

reference ×1

syntax ×1

variable-declaration ×1