01-08课堂笔记(粤嵌)

本文介绍了C语言中的一级指针、二级指针、普通变量、地址操作以及malloc函数的作用。重点讲解了数组名作为指针的特性,以及如何处理数组的首元素地址和完整地址。并通过实例展示了数组名在指针运算中的应用。

课堂知识点:

二级指针变量:

可以用来存储二级指针常量,就是一级指针变量的地址

一级指针变量:

可以用来存储一级指针常量,就是普通变量的地址

普通变量:

只能存储与之对应的常量

地址加减:

地址加一或减一就是加上或减去它单位长度相同的字节,如果是数组“完整地址”加减就是加上或减轻它数组长度的字符

malloc的作用是什么?:

申请堆空间,然后把堆空间的首地址返回给你使用。申请的空间的大小要根据你的指针变量的类型来思考

二维数组:

二维数组包含多个一维数组,其中二维数组的    行:一维数组的个数     列:一维数组的长度(每一个一维数组的长度都应该是一样的),所以列数在二维数组变量定义的时候要确定

(注意)在定义二维数组时行可以先不定义,但列必须定义

               int array[行][列]; 二维数的  [ ]  中括号里一定是常量或常量表达式

数组名:数组名确实能代表受元素地址但有两个例外

1,sizeof(数组名),这里的数组名代表的是整个数组,计算的是整个数组的大小,单位是字节

2,&数组名,这里的数组名代表的是整个数组,取出的是整个数组的地址

课堂练习:

 其中,前三个是比较重要的,理解好前三个剩下的就好理解了。

首先,我们应该区分  “完整地址+1”    和   “首元素地址+1”   

数组名指向数组首元素地址代表数组地址,但不是数组完整的全部元素的地址

因为内存里的元素是连续的,所以通常以首个元素地址代表数组地址

当直接使用数组名进行加减时  arry+1  数组名=数组首元素地址

 arry = arry[0]   会跳过单位类型个字节

当对数组名进行取地址时  &arry +1  这里会跳过整个数组长度的地址

此外,我们还要注意:

取地址 & 与 解引用 * 可以相互抵消

为什么数组名可以当初指针来用呢?

    因为当数组名出现在表达式中时,它会被隐式转换为指向数组第一个元素的指针。

这意味着你可以将数组名视为指针来使用,可以对它执行指针运算,比如对其加1或减

练习:

 

 作业:

int main()
{ 
    int num = 0,sum =0;
    int array[] = {0,1,0,1,1,1,1,0,0,0,0,1,1,1,};
    num = sizeof(array) / sizeof(int);
    for(int i =0; i<num; i++)
    { 
        while(array[i]){ 
            sum++;
            break;
        }
    } 
    printf("0有%d次----1有%d次",num - sum,sum);
    return 0;
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值