C语言基础——数组

一、一维数组

二、字符串数组

一、一维数组
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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值