数据类型之数组

1. 数组基本用法。

查看菜鸟教程:http://www.runoob.com/cprogramming/c-arrays.html

2. 易错难点

(1)数组名和指针区别。

  • 数组名就是一个指向数组首地址的常量指针,一经定义,不可更改,其类型与数组首元素的地址相同(但是是常量指针)。
    int arrn[5]={1,2,3,4,5};
    int *p;
    p=&arrn[0];
    printf("&arrn[0]=%d\n",&arrn[0]);//数组首元素地址
    printf("arrn=%d\n",arrn);//数组名=指向数组首元素常量地址
    printf("p=%d\n",p);

    printf("*arrn=%d\n",*arrn);
    printf("*p=%d\n",*p);

    printf("arrn+1=%d\n",arrn+1);
    printf("p+1=%d\n",p+1);

    printf("*(arrn+1)=%d\n",*(arrn+1));
    printf("*(p+1)=%d\n",*(p+1));

这里写图片描述
- 当出现sizeof,和&操作符时,数组名不再当成指向首元素的常量指针来使用,而是包括一组数据结构的变量。

    printf("sizeof(arrn)=%d\n",sizeof(arrn));
    printf("sizeof(p)   =%d\n\n",sizeof(p));

    printf("&arrn+1=%d\n",&arrn+1);
    printf("&p+1   =%d\n",&p+1);

这里写图片描述

  • 数组名作为函数形参时相当于指向首地址的常量指针,那么指针变量只会包含数组的地址信息,而对数组的长度一无所知,相当于指针丢失了一些信息。我们把这种信息的丢失称为退化。只要把数组变量传递给函数,数组免不了退化为指针,所以,把数组传递给函数,需要明确的指明数组的大小。
int sum(int arrn[],int n)//int arrn[]相当于传递数组首元素地址,相当与int sum(int *arrn,int n)
{
    int nSum=0;
    for (int i=0;i<n;i++)
    {
        nSum+=arrn[i];
    }
    return nSum;
}

int arrn[5]={1,2,3,4,5};
int nSum=sum(arrn,5);
printf("nSum=%d\n",nSum);

nSum=15

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值