引言:数组即相同元素的集合,而数组名便是该数组的名字。然而在许多不同场景下,数组名却有着不同的含义。
一、一维数组
假设A是一个一维数组的数组名
一维数组名的含义:
在通常情况下,数组名表示首元素地址,但是有俩种特殊情况:
1.数组名单独放在sizeof内部,这是数组名表示整个数组,求出的是整个数组大小
例:sizeof( A ) A表示整个数组
2.&数组名,这里的数组名表示整个数组,所以求出的是整个数组的地址
例:&
函数传参
一维数组在进行函数调用时有一下几种方式
总结:一维数组传递的是首元素地址,形参可以用指针来接受
解引用操作:
因为一维数组数组名代表首元素地址,所以这里的*arr得到的这个一维数组的第一个元素,
二、二维数组
二维数组名含义:
二维数组名表示第一行元素的地址,而第一行是一个一维数组
函数传参:
总结:二维数组代表第一行元素地址,所以在传参时,形参可以用数组指针接收
解引用操作:
因为二维数组数组名代表第一行所有元素的地址,所以这里*arr得到的是第一行首元素的地址
三、用scanf给数组赋值、
一、下标引用法
一维数组
二维数组
二、指针法
一维数组
二维数组
总结:
由于scanf是格式化将从控制台所读取到的数据附加到参数所指的位置,所以scanf最重要的事scanf()中的逗号后面要是一个正确的地址。
而printf是格式化输出附加参数,所以printf更重要的是printf( )中的逗号后面是否是一个正确的参数