C语言精通模块下篇

本文深入探讨了C语言中的数组,包括概念、定义、初始化和访问,特别是部分初始化和全初始化的区别。此外,介绍了字符串的输出、输入函数以及与scanf和gets的区别。还讲解了冒泡排序算法。接着,详细阐述了字符数组,如strlen、strcpy等字符串处理函数的使用。二维数组的概念、初始化和访问规则也进行了说明。最后,探讨了函数的基本概念、调用方式,以及指针的定义、访问和赋值,强调了避免野指针的重要性。
摘要由CSDN通过智能技术生成

Day6

数组

1. 概念

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

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

 

2. 定义

存储类型  数据类型  变量名;

          int    a;

存储类型  数据类型  数组名【元素的个数】;

           int        arr[5];

           float      brr[5];

定义了一个数组,数组名为arr,数组中有五个int类型元素;

数组名:arr

数据类型:数组元素的数据类型

数组的数据类型是什么?

数据类型:去掉变量名,就是数据类型

数组的数据类型: int [5];

int arr[5];//数据类型是 int [5];

int brr[6];//数据类型是 int [6];

int crr[5]; //数据类型是 int [5],int crr[5]的数据类型和int arr[5]的数据类型一样

int [5]和int [6]表示的数据类型是不一样的;


元素的个数:必须为一个确定的值

 

数组名

代表数组首元素的地址(可以表示整个数组)

%p:打印地址

 

3. 初始化

3.1 部分初始化

Int arr[5] = {1,2,3};

部分初始化,未被初始化的部分,值为0

用此特性给数组清零

Int arr[5]={0};

 

3.2 全部初始化

全部进行初始化

 

Int arr[ ];//error

只有全部初始化的时候才可以这样去做!!!

Int arr[ ] = {1,2,3}; //可以,编译器自动计算数组元素的个数

 

如果不进行初始化:产生的结果

 

 

总结:

  1. 数组定义在函数体外,(相当于全局变量)不初始化,元素都为0
  2. 数组定义在函数体内,(相当于局部变量)不初始化,元素为随机值
  3. 数组定义在函数体内,(相当于用static修饰局部变量)用static修饰,不初始化,元素都为0;

4. 访问

 

 

案例:判断以下四个是否正确

1、int a[5];(a[0]----a[4])

   a[4] = {1,2,3,4,5} ;  //error 没有a[5]

2、int a[5];

   a = {1,2,3,4,5};  //error数组名表示数组首元素的地址

3、int a[ ] = {0};  //对,没有意义 int a = 0;

4、int a[ ];  //error 编译器不知道要分配多大的内存空间

5. 冒泡排序

(c语言阶段唯一一个算法)

Int arr[5] = { 14, 85,99,2,30};------------> 2,14,30,85,99

思想:从左向右两两依次比较,如果前一个数大于后一个数,就交换位置;反之,不变。

 

 

作业:

  1. 不使用冒泡排序,输出最大值

 

 

2. 打印菱形

3. 打印9*9乘法表

字符数组

定义:

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

存储类型  数据类型 数组名[元素的个数];

          char str[10];

定义了一个名为str的字符数组,所占内存空间:sizeof(数据类型)*元素的个数=1*10=10

数据类型:元素的数据类型

数组的数据类型:char [10];

初始化:char str[10]={‘s’,’h’,’a’,’n’,’g’};

        char sstr[6]={‘h’,’e’,’l’,’l’,’o’};//自己最多只能去初始化五个字符,因为要给’\0’留位置

Char atr[10]=”hello”;

用部分初始化的特性去给字符数组清零:char btr[10]={‘\0’};  

1. 字符串的输出函数: 

%s:输出字符串

puts(数组名);

功能:将数组的内容打印到终端,并自动添加换行

注意:遇到’\0’结束

 

 

2. 字符串的输入函数

gets(数组名)

功能:将键盘接受到的字符串存入数组,并会在末尾添‘\0’

注意:不会进行越界检查,输入的时候要注意不要越界

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花诚之夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值