c - 结构名称 - 指针

标签 c pointers structure

事实:在 ANSI C 中,数组名可以用作指针。

对于:

unsigned int array_X[10];
void function(unsigned int *array);

我可以两种方式调用函数:

function(&array_X);
function(array_X);

我的问题是,什么代表结构的名称?它也是指针,可以像数组一样使用吗?

最佳答案

I can call function both ways

只有第二种方式是正确的。第一个传递的指针类型不正确,因此可以公平地说它是巧合。

what represents name of the structure?

代表结构本身的值。结构的地址恰好与其第一个成员的地址一致,但您必须使用 & 运算符显式获取地址。

回到数组,数组名可以用作指向其初始成员的指针这一事实并不意味着数组名仅表示该指针:名称表示整个数组,但编译器知道如何根据使用数组名称的表达式提取指针;这称为数组名称衰减

关于c - 结构名称 - 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25406501/

相关文章:

c++ - 用于类似区域/竞技场分配的 STL 容器

c - 从函数返回指向结构的指针

c - 为 GPU 优化 opencl 中的内核代码

c - 包含标题时未定义的函数引用

c - 消除 void ** 与 any_struct_t ** 警告

c - 在函数中使用双指针

c - 对 'WinMain' 的 undefined reference [错误] ld 返回 1 退出状态,将矩阵作为函数中的参数传递

c - Windows:防止 sleep 模式 - C 中的最小版本

java - JNI 中 unsigned char 指针的等价物是什么?

c - 将指针传递给函数会破坏指针