&q;char(*a)[12]&q;是什么意思? [英] What does "char (*a)[12]" mean?

查看:28
本文介绍了&q;char(*a)[12]&q;是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是来自C标准的吗?

推荐答案

因为C中的声明遵循运算符优先规则(即数组订阅在间接之前求值),所以您需要用括号来声明指向数组类型的指针。

在许多用例中,使用普通char *并没有什么实际好处,除了它是一种强制数组大小的方法,尤其是在用作函数参数时:

void foo(char bar[42]);

相当于

void foo(char *bar);

并接受任何char *,而

void foo(char (*bar)[42]);

将仅接受指向大小为42的数组的指针。

由于在后一种情况下访问bar的元素很麻烦,因此最好立即在函数体中定义一个等价的char *

char *baz = *bar;

以便您可以使用直接订阅baz[13]而不是(*bar)[13]

这篇关于&q;char(*a)[12]&q;是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆