我看到了这样的任务:
info->table = &_ttable_full[0];
为什么不直接使用这个:
info->table = _ttable_full;
有什么优势吗?还是只是作者的风格?
yqkkidmi1#
在您展示的用法中,C语义没有区别。在某些情况下,我会使用A来表示结果指针可以用于访问整个数组,而&A[0]则表示该指针仅用于访问特定的元素。类似地,A+j表示结果地址是某个算法的起点。而&A[j]则表示对某个元素感兴趣。这些只是为了帮助读者。就像在文档中使用不同的字体一样,它们并不改变文本的字面意义,而是帮助引导读者理解它。请注意,在某些情况下,A和&A[0]会有所不同。sizeof A会给出大小(字节数),而sizeof &A[0]给出指向数组元素的指针的大小。&A给出指向数组的指针(它的类型与指向元素的指针不同),而&&A[0]不是C语法的正常组成部分。(一些编译器可能在扩展中使用&&。)
A
&A[0]
A+j
&A[j]
sizeof A
sizeof &A[0]
&A
&&A[0]
&&
bwitn5fc2#
这只是一种文体约定,用于明确表示您正在为数组提供地址。
2条答案
按热度按时间yqkkidmi1#
在您展示的用法中,C语义没有区别。
在某些情况下,我会使用
A
来表示结果指针可以用于访问整个数组,而&A[0]
则表示该指针仅用于访问特定的元素。类似地,A+j
表示结果地址是某个算法的起点。而&A[j]
则表示对某个元素感兴趣。这些只是为了帮助读者。就像在文档中使用不同的字体一样,它们并不改变文本的字面意义,而是帮助引导读者理解它。请注意,在某些情况下,
A
和&A[0]
会有所不同。sizeof A
会给出大小(字节数),而sizeof &A[0]
给出指向数组元素的指针的大小。&A
给出指向数组的指针(它的类型与指向元素的指针不同),而&&A[0]
不是C语法的正常组成部分。(一些编译器可能在扩展中使用&&
。)bwitn5fc2#
这只是一种文体约定,用于明确表示您正在为数组提供地址。