第54集 数组 _一维数组

1.数组的大小可以是常量表达式或常量,也可以是变量或变量表达式

2.在 C 语言中,变长数组不能被初始化。以下是一个示例代码:

int n;
scanf("%d",&n);
int arr(n)={0};
int n=10;
int arr(n)={0};

上述代码中,因为n是变量,所以无法在定义数组时对数组内的元素初始化。想要初始化需要限定数组的范围,如将n改为常量10。

在编译器不知道变量(数组大小)具体是多少的时候对数组初始化是没有意义的。所以,即使在支持 C99标准的编译器中,变长数组也不能初始化。

3.数组是使用下标访问的,下标是从0开始

4.数组的大小可以通过计算得知(设数组名为arr,)

int sz=sizeof(arr)/sizeof(arr[0])   解释:sizeof(arr)是整个数组的内存大小;而后部分则为一个元素的内存大小

5.随着数组下标的递增,元素的地址,也是有规律的递增,因此数组在内存中是连续存放的

6.数组进行初始化时,有部分元素没有初始化,则元素默认为零

7.自己补充(利用函数打印数组里的元素)

void test(int arr[])//第一点  (形参改成int *arr也可以)  
{
    arr[0] = 1;//通过数组的下标来访问这个数值中的元素,并对其进行赋值
    arr[1] = 2;
    arr[2] = 3;
}
#include<stdio.h>
int main()
{
    int arr[3];//建立一个函数名为arr,整型的,大小为12个字节的数组
    test(arr);//当函数被调用时,实际上是将数组的首地址传递给了指针形参arr。
    int i=0;
    while (i <= 2)
    {
        printf("%d\n", arr[i]);
        i++;
    }
    return 0;
}

第一点(解释):

总结:

(1)如果你的目的是接受一个整型数组作为函数参数,使用int arr[]或者int *arr通常是更为合适的选择,两种写法都是一样的效果。(当你使用int arr[]作为形参时,编译器会将其理解为int *arr)


(2)因为,目的是为了能在自定义的函数内操作数组内的元素,那就需要通过指针建立联系(而鉴于数组在内存的存储是连续的关系,所有需要将首地址传递到数组内就行,由(1)可得int arr[]或者int *arr都可以存储首地址),但如果你使用int *arr[]作为函数的形参,这通常会被视为一个指针数组,其中每个元素都是指向整型的指针,而不是表示单纯的整型数组,所以不能这样写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值