int a;
int *p = &a;
int a[5];
int *p = a;
对指针 p 赋值的时候,为什么一个是对 a 取地址,一个是变量 a 就行了
int a;
int *p = &a;
int a[5];
int *p = a;
对指针 p 赋值的时候,为什么一个是对 a 取地址,一个是变量 a 就行了
|
dtgioMar 2, 2018 via iPhone
1
因为第一个 a 是 int,另一个 a 是 int[]
(。) |
|
AlchemistxxdMar 2, 2018
2
因为第二个的内存布局是 int *a
|
|
hxndgMar 2, 2018
3
你需要首先解释变量 a 是个什么东西,
然后再考虑你问的这个问题。 |
|
xruiMar 2, 2018 via Android
4
数组名是数组首元素的地址
|
|
5
第二个 a 本身就是地址
|
|
6
@xrui 怎么你一说,我就懂了呢
|
|
xruiMar 2, 2018 via Android
7
@thomaswang 我也就书上概念背得熟而已😂多看看书就好啦~
|
|
aheadleadMar 2, 2018 via iPhone
8
@thomaswang 因为他说的对而且准确
|
|
hxndgMar 2, 2018
9
@thomaswang
如果前面的你看不懂,你可能需要去看一些基础的 c 教程,或者拿 gdb 追一边代码 |
|
10
数组名是数组第一个元素的地址,这是王八的屁股-龟腚。
|
|
but0nMar 2, 2018
11
数组和指针之间有着蜜汁关系, c 语言圣经里有讲过
|
|
12
@but0n 圣经是那本呢
|
|
13
数组名 a 是个变量,它的类型是数组类型 int [5],并不是指针类型。数组名传递时会 退化 为指针:该指针的类型是数组包含的元素类型,这里是 int ;该指针指向数组的第一个元素。
|