C语言 在分配中使用&my_array[0]而不是my_array的原因或优点是什么?

yxyvkwin  于 2022-12-11  发布在  其他
关注(0)|答案(2)|浏览(99)

我看到了这样的任务:

info->table = &_ttable_full[0];

为什么不直接使用这个:

info->table = _ttable_full;

有什么优势吗?还是只是作者的风格?

yqkkidmi

yqkkidmi1#

在您展示的用法中,C语义没有区别。
在某些情况下,我会使用A来表示结果指针可以用于访问整个数组,而&A[0]则表示该指针仅用于访问特定的元素。类似地,A+j表示结果地址是某个算法的起点。而&A[j]则表示对某个元素感兴趣。这些只是为了帮助读者。就像在文档中使用不同的字体一样,它们并不改变文本的字面意义,而是帮助引导读者理解它。
请注意,在某些情况下,A&A[0]会有所不同。sizeof A会给出大小(字节数),而sizeof &A[0]给出指向数组元素的指针的大小。&A给出指向数组的指针(它的类型与指向元素的指针不同),而&&A[0]不是C语法的正常组成部分。(一些编译器可能在扩展中使用&&。)

bwitn5fc

bwitn5fc2#

这只是一种文体约定,用于明确表示您正在为数组提供地址。

相关问题