11.4 晚自习 对11.2 是否加&取地址的纠正

发布于 17 天前  21 次阅读


在C语言中,数组名在某些情况下可以直接用作指针

int arr[10];
scanf("%d", &arr[0]);  // 正确,使用 & 符号
scanf("%d", arr);      // 也正确,arr 代表 &arr[0]

数组名可以被视为指向其第一个元素的指针,这里强调的是第一个元素

但是在单个具体的数组,比如arr[1],就必须加上&,这里不加&的例子也就只有arr整体(这个数组名可以视为指向第一个元素的指针,它可以局限性地进行地址的定位

arr[1] 是数组 arr 中第二个元素的值,而不是地址,那么他就得加上&

scanf 需要的是一个指向 int 类型的指针(即地址),而不是一个 int 值

//也即,arr[1]等价于 *arr [1] (已经解引用,等价于变量名)


int arr[3][2];
scanf("%d", &arr[0][0]);  // 正确,使用 & 符号
scanf("%d", arr[0]);      // 也正确,arr[0] 代表 &arr[0][0]

对二位数组,能不加&的也就是arr[ ]这种,不加第二个[ ],单纯表示二位数组中的

所以不加&就是特例,加&才是正常的!!!

届ける言葉を今は育ててる
最后更新于 2024-11-04