#define N 20
int a[2N], i, *p, sum;
p = a;
/* p=a is equivalent to p = *a[0];
• p is assigned 300.
• Pointer arithmetic provides an alternative to array indexing.
• p=a; is equivalent to p=&a[=]; (p is assigned 300)
Run Code Online (Sandbox Code Playgroud)
在这里,我没有得到如何p=*a[0]和p=&a[0]相同?*a[0]引用内存地址处的元素.
第1点
你的理解,这里int a[2N]是无效的代码?
这2N并不意味着2*N,而是将N其视为无效的后缀(对于整数文字2).
感谢Mr @LưuVĩnhPhúc的评论如下.
如果你想要类似的东西int a[40],请写int a [2*N]
第2点
p=*a[0]并且p=&a[0]是一样的
不,他们不一样.事实上,与当前的代码片段,*a[0]是无效的.
FWIW,p = a;并且p = &a[0];是相同的,因为数组名称表示基址,即数组中第一个元素的地址.