华清学习笔记day4笔记一维数组

本文详细介绍了C语言中数组的概念、初始化方法、一维数组和二维数组的区别,以及数组的遍历、输入输出、清零函数(bzero和memset)的应用,同时涉及字符数组的特性和字符串处理函数如gets和puts。
摘要由CSDN通过智能技术生成

7.31笔记

【1】数组

**概念:**具有一定顺序的若干变量的集合
定义数组:存储类型 数据类型 数组名[元素的个数]
int arr[5];//定义了一个数组名为arr的数组并且数组中可以存放五个数,开辟了五个int类型的空间存放
int arr[5]={ 1, 2, 3,4,5}; int a=10;
下标: 0,1,2 3 4
数组名:代表数组的首地址,地址常量 ,不可以被重新赋值,不能为左值,不可以进行++ --的操作
数组中的每一项都是变量,称之为元素
数组的更新:
访问元素:数组名[元素的下标] 下标从零开始
arr[0]---->在arr数组中访问第一个元素的值
访问第一个元素arr[0]
访问第n个元素:arr[n-1]
如果一个数组中存放了5个元素,对应下标到5-1的位置
注意数组越界的问题(在访问时和定义时都要注意)
修改元素的内容:数组名[元素的下标]=新值
在这里插入图片描述

int a=1; a int arr[3]={1,2,3}—>arr[0] arr[0]就是第一个元素的变量名

特点:

1.定义数组的数据类型和后面要存储的数据类型相同
2.内存是连续的
在这里插入图片描述

3.遵循标识符的命名规则
4.数组下标从0开始,n个元素,下标到n-1
5.在同一个函数中,数组名和变量名不可以重名
int a[5];
int a=10;//报错
分类:
一维数组 二维数组

【2】一维数组

1.格式:存储类型 数据类型 数组名[元素的个数]
2.访问元素:数组名[下标],下标从零开始
3.数组名:数组首地址 不能为左值

1.初始化:

1》.全部初始化

int a[3]={1,2,3};
注意数组越界的问题
int a[3]={1,2,3,4}//错误

2》.部分初始化:

int a[3];
a[0]=1;
a[1]=2;
//1,2,随机数
int a[3]={1,2} //1,2,0

3》.未初始化:

int a[3];---->a={1,2,3}//错误
a[0]=1;
a[1]=2;
a[2]=3;
int b;—》b=10;
定义空数组:
1.int a[3]={0,0,0};
2.int a[3]={0};//0,0,0
3.int a[3]={};//0,0,0
引用:
1.先定义后引用
2.每一次引用只能引用一个元素a[i],想要引用多个就只能循环遍历
3.引用时要注意数组越界,有的编译器不会报错
4.打印数组的元素的地址,使用%p格式
5.引用时数组的内存地址是连续,分配情况
在这里插入图片描述

数组的遍历

int a[3]={1,2,3};
a[0], a[1], a[2];
for中的循环变量i i=0, i<3, ---->0,1,2
在这里插入图片描述

数组的输入输出:
在这里插入图片描述

练习:对数组进行求和
在这里插入图片描述

int a;int arr[5];

数组的大小

1.元素的个数*数据类型的大小
2.sizeof()
在这里插入图片描述

数组的元素的个数:
1.数组的大小/数据类型的大小
2.sizeof(数组名)/sizeof(数据类型)

练习:计算斐波那契数列前15项并逆序输出
1 1 2 3 5 8…
a[i]=a[i-2]+a[i-1]
a[i+2]=a[i]+a[i+1]
在这里插入图片描述

【3】清零函数

2.bzero

#include <strings.h>
void bzero(void *s, size_t n);
功能:将内存空间设置为0;
参数:s:需要清空空间的首地址
n:需要清空的空间的字节大小
返回值:无

在这里插入图片描述

3.memset

#include <string.h>
void *memset(void *s, int c, size_t n);
功能:将内存空间设置为0;
参数:s:需要清空空间的首地址
n:需要清空的空间的字节大小
c:将空间设置成的值 默认是写0,设置成其他不准确
返回值:清空空间后首地址

【4】字符数组

概念:原来存放若干字符的集合(存放字符串),数据类型是char类型
定义:
char arr[]={“hello”}; //元素的个数就是6,字节数:6 ----->char arr[6]={‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};//6字节
char b[]=“hello”----->//元素的个数就是6,字节数:6
char c[32]=“hello”----->//实际元素的个数就是6,字节数:32
注意:在定义字符数组时,经常省略元素的个数,需要注意数组越界

字符数组的输入输出

1.for循环,打印格式%c
2.%s格式可以直接输入输出字符串(使用这个格式输入不可以包含空格)
注意:scanf在使用是会将空格和\n都理解成结束
可以使用%[^\n]格式: 直到遇到\n才理解为是结束
在这里插入图片描述

4.gets

char *gets(char *s);
功能:从终端输入一个字符串
参数:s:字符数组的首地址
返回值:目标字符串的首地址
在这里插入图片描述

注意:使用gets的时候不关心数组越界的问题,使用时会报警告

puts

int puts(const char *s);

功能:向终端输出一个字符串

参数:s:要输出的字符数组的首地址

返回值:输出的字符的个数

在这里插入图片描述

练习:
判断对错:
题目:char s[10]={};
1.s[10]=“hello”;//错
2.s=“hello”;// 错
3.strcpy(s,“hello”);//对

练习:将字符串倒置 char s[6]=“hello” ---->olleh

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值