C补 week 2

数组的概念:一组数据类型相同的元素组合在一起

                    1、数据类型相同   2、地址连续

数组的定义:1、数组定义在函数体外,(相当于全局变量)不初始化,元素都为0

                      2、数组定义在函数体内,(相当于局部变量)不初始化,元素为随机值

                     3、数组定义在函数体内,(相当于用static修饰局部变量)用static修饰,不初始化,元素都为0;

数组的访问:

 冒泡排序的本质思想:从左到右两两依次比较,如果前一个数大于后一个数,就交换位置;反之,不变。

字符数组的本质就是字符串。

scanf与gets的区别:

1、scanf是标准输入函数,他每次输入都会采用键入的方式,不会去检查缓冲区有无内容

2、gets会先去检查缓冲区有没有东西,如果缓冲区有内容,他会率先去读取缓冲区的内容

注意:

scanf每次输入后,会在缓冲区遗留 空格回车tab键

gets每次输入完毕之后,他会自动清空缓冲区里面的内容

字符串的处理函数:strlen(求字符串的实际长度,不包含’\0') 

                 strcpy(字符串拷贝函数,将数组2的内容完全拷贝给数组1,包括‘\0’,相当于完全拷贝)

                 strncpy(将数组2的前n个拷贝给数组1,不包含'\0')

                 strcat(字符串连接函数,将数组2的内容连接至数组1中,会覆盖数组1的'\0')

                 strcmp(字符串比较函数,比较两个字符串的大小)

二维数组:他是元素为一维数组的一维数组,他的本质还是一维数组。

二维数组的访问:

 

调用函数的注意事项:

1、需要将实参的值传递给形参,实参的个数和数据类型必须和形参一样

2、实参可以是变量,常量,表达式,必须是一个确定的值

3、实参和形参是两块独立的空间

4、传参实际上是将实参的值拷贝给形参

5、形参在函数调用时被定义,函数调用完毕之后,释放

指针是一种数据类型,是一种保存地址的数据类型。   (int*)

指针的本质就是内存单元的编号。

                              *的作用:1、作为双目运算符:表示乘法

                                               2、定义变量时,表示指针这种数据类型

                                                3、作为单目运算符,取值*p(取地址里面的值)

二级指针:保存一级指针的地址  (int **)

 

 指针的算术运算:

p+n:p+n相当于向地址增大的方向移动n个数据类型

                实际的变化:向地址增大的方向移动:n *sizeof(p指向的数据类型)个字节

p-n: p-n相当于向地址减小的方向移动n个数据类型

                实际的变化:向地址减小的方向移动:n*sizeof(p指向的数据类型)个字节

p++:p向地址增大的方向移动一个数据类型(p指向的数据类型)

p--:p向地址见效的方向移动一个数据类型(p指向的数据类型)

p-q:(p和q的数据类型要相同)//两个之间相差的元素

注意:1、指针可以进行计算,同时指针常量也可以进行计算,++,--除外

                2、只有在访问连续的空间时,指针的运算才有意义

注意:printf右结合

可以通过指针变量去访问数组:

 总结:

1、数组名代表的是,数组首元素的地址,是一个指针常量,不可以++ ,--;

2、上面三种情况都相当做指针处理,在64os占8个字节,在32os占4个字节

指针与二维数组的关系:

1、a、 &a[0]、&a[0][0]他们的值相同,但是意义不一样

                a: int (*)[3],:指向一维数组的指针

                a[0]:int *:指向一个整型变量

                a[0][0] : int

 2、为什么说a不是int**

        如果a的数据类型是int**,那么他指向的数据类型就是int *,那么他+1,应该移动8个(64os)/4个(32os)字节,然而!我们给a+1,他移动了12个字节,移动了一个数组。所以,a指向的是一维数组(这个数组中有三个元素)

3、nt a[2][3] :理解:a中有两个元素,这两个元素都是一维数组,这个一维数组中又有三个元素,都为int类型

4、指向的是(a[0]),a[0]又是一个一维数组,所以我们说a指向了一个一维数组

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值