p =*a [0]和p =&a [0]之间有什么区别

Luc*_*cky 2 c arrays pointers

#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]引用内存地址处的元素.

Sou*_*osh 5

第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];是相同的,因为数组名称表示基址,即数组中第一个元素的地址.