C语言基础——数组

本文详细介绍了C语言中的一维数组和字符数组的定义、引用、初始化及操作。对于一维数组,讲解了如何定义、引用数组元素以及初始化方式。对于字符数组,特别强调了字符串的结束标志'',并展示了字符数组的输入输出、字符串处理函数如puts、gets、strlen、strcat、strcpy、strncpy和strcmp的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一维数组

二、字符串数组

一、一维数组
1.1、定义一维数组
1.1.1、一般形式为:类型符 数组名[常量表达式],如:int a[n]
说明:(1)数组名的命名规则遵循标识符命名规则
   (2)数组下标从0开始,如a[10]下标为0-9,不存在a[10]
   (3)C语言规定,常量表达式不允许做动态定义,如下面这样定义数组是不允许的,数组的大小不能依赖于程序运行过程中变量的值

int n;
scanf("%d",&n);
int a[n];

1.2、引用一维数组
1.2.1、引用数组的表示形式
数组名[下标],如a[0]表示数组序号为0的元素
注意:引用数组只能引用数组元素,而不能一次整体调用整个数组全部元素的值

1.2.2、一维数组的初始化
(1)在定义数组时对全部数组元素赋予初值:
int a[10] = {0,1,2,3,4,5,6,7,8,9};
(2)可以只给数组中的一部分元素赋值:
int a[10] = {0,1,2,3,4};系统给未赋值的元素赋初值为0
(3)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度:
int a[5] = {1,2,3,4,5};等价于int a[] = {1,2,3,4,5}虽然没有指定长度,但是系统会根据花括号中的数据个数自动确定a数组有5个元素

二、字符数组
2.1、定义字符数组,与定义数值型数组类似:
char c[10] = {'a','b','c'};
需要注意的是字符型数据是以ASCII码的形式存放的,因此也可以用整型数组来存放字符,如:int c[10] = {'a','b','c'};是合法的,但是浪费存储空间

2.2、字符串和字符串的结束标志
2.2.1、C语言中,是将字符串作为字符数组来处理的
2.2.2、以字符’\0’作为字符串的结束标志

#include <stdio.h>
int main()
{
	int i;
	char c[5] = {'a','b','\0','c','d'};
	printf("%s",c);
	printf("\n");
}
//输出为ab

2.3、字符数组的输入输出
2.3.1、单个字符输入输出

int i;
char c[5] = {'a','b','c','d','e'};
for(i = 0;i < 5;i++)
{
	printf("%c",c[i]);
}
//输出为abcde

2.3.2、将整个字符串一次输入或输出

#include <stdio.h>
int main()
{
	int i;
	char c[5];
	scanf("%s",c);
	for(i = 0;i < 5;i++)
	{
		printf("%c ",c[i]);
	}
	printf("\n");
	printf("%s\n",c);
}

在这里插入图片描述
注意:scanf无法录入空格

2.4、使用字符串处理函数
2.4.1、puts函数——输出字符串的函数

char str[] = {"china"};
puts(str);
//输出china

2.4.2、gets函数——输入字符串的函数

gets(str);
//可以输入空格

2.4.3、strlen函数——测字符串长度的函数

char str[10] = "China"
printf("%d\\n",strlen(str));
//输出为5

2.4.4、strcat函数——字符串连接函数

char a[100] = {"abcd"};
char b[] = {"efgh"};
printf("%s\n",strcat(a,b));
//输出为abcdefgh

注意:strcat的作用是把b字符串接到a字符串后面,结果放到a中,所以a一定要足够大
2.4.5、strcpy和strncpy函数——字符串复制函数

char a[10] = {"abcd"};
char b[] = {"efgh"};
char c[] = {"ijkl"};
printf("%s\n",strcpy(a,b));//输出efgh,将b复制给a并替换a中原有的字符串
printf("%s\n",strncpy(a,c,2));//输出ijgh,将c中的前两个字符复制给a中的前两个字符

注意:(1)a字符必须足够大容纳b字符
   (2)复制完后的结果是放到a字符中
   (3)使用strncpy注意复制的字符个数n应小于本身长度且小于a的长度
2.4.6、strcmp函数——字符串比较函数

char a[] = {"abcd"};
char b[] = {"efgh"};
printf("%d\n",strcmp(a,b));
//输出-1

注意:(1)以第1对不相同的字符的比较结果为准
   (2)如果a=b,返回0
   (3)如果a>b,返回1
   (4)如果a<b,返回-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值