Linux个人学习笔记四

这篇博客详细介绍了Linux中的数组概念,包括数组的作用、定义、初始化、赋值和遍历,特别讨论了字符数组和二维数组的细节,如字符串输入输出函数以及二维数组的初始化和访问方式。
摘要由CSDN通过智能技术生成

一。数组

数组的作用:

存储大量同种数据类型时,为了避免重复定义标识符,出现标识符过多,出现忘记和重复,所以引入了数组。

什么是数组:

数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。

数组的特点:

数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。

数组的定义:

变量: <存储类型><数据类型><变量名/标识符>
auto int a;
数组的定义:
<存储类型><数据类型><数组名/标识符>[数组元素个数];
auto int arr[6];
存储类型:
auto:普通类型,可以省略;
register:寄存器存储;
static:静态存储类型;
extern:外部存储类型;
数据类型:
int char short long double float;
数组名:
符合标识符命名规则;
数组的初始化
int a = 0;
完全初始化:
int arr[6] = {0}; //给数组的所有元素赋初值为0
int arr[6] = {1,2,3,4,5,6};
部分初始化:
int arr[6] = {7,8,9};
int arr[] = {1,5,6,8,18,9,677,4};
int a1[];
数组的赋值
int arr[6];
arr[0]=1;
arr[1]=2;
...
for(int i=0;i<6;i++)
scanf("%d",&arr[i]);
//注:只能一个元素一个的赋值
数组的元素的访问
数组名【下标】
    arr[2]=10;
     printf("%d\n",arr[2]);
终端打印: 10;
数组的遍历
int arr[6];
for(int i=0;i<6;i++)
printf("%d ",arr[i]);
遍历:指将数组所有元素都访问一遍
数组的越界

在定义数组时,计算机会预留一部分空间; 防止编译编不过。


二。字符数组

1。定义

数组的定义:
<存储类型><数据类型><数组名/标识符>[数组元素个数];
auto char ch[6];

2.初始化

完全初始化:
       auto char ch【5】 = {‘h’,‘e’,‘l’,‘o’};
       char ch[5] = {"hello"};
       char ch[5]=  "hello";

部分初始化:
       char ch[5] = {'h','i'};
       char ch[5] = {"hi"};
       char ch[] = "hello";

3赋值

char ch[5];
ch[0] = 'h';
ch[i] = 'e';
...
ch = "hello";

4.字符串输入输出函数(puts,gets)

char *gets(char *s);
int puts(const char *s);
gets:是不安全的;
puts:在打印的时候,会默认加一个换行;

三,字符串操作数组

头文件:
#include <string.h>
strlen:
函数原型:
size_t strlen(const char *s);
功能:
得到s中的字符串的长度;
返回值:
返回长度;
sizeof与strlen的区别
1.sizeof求大小的时候会加上'\0';
2.sizeof(数组名):求数组空间一共有多大;
strlen(数组名):求数组内的有效字符有多少个,遇到'\0'就结束;
3.sizeof是运算符,strlen是函数;
strcpy:
函数原型:
char *strcpy(char *dest, const char *src);
功能:
把src内的字符串,复制到dest中去;
src:字符串常量,字符数组名;
dest:字符数组名;
char *strncpy(char *dest, const char *src, size_t n);
功能;
把src内的字符串的前n个字符,复制到dest中去;
src:字符串常量,字符数组名;
dest:字符数组名;
strcat:
函数原型
char *strcat(char *dest, const char *src);
功能:
把src里面的字符串,追加到dest中;
src:字符串常量,字符数组名;
dest:字符数组名;
char *strncat(char *dest, const char *src, size_t n);
功能:
把src里面的前n个字符串,追加到dest中;
src:字符串常量,字符数组名;
dest:字符数组名;
strcmp:
函数原型:
int strcmp(const char *s1, const char *s2);
功能:
比较s1和s2里面的字符的ASCII码的大小;
返回值:
等于0:代表s1和s2两个字符串相同;
大于0:s1对应的ASCII码值要大一点;
小于0:S2对应的ASCII码值要大一点;
int strncmp(const char *s1, const char *s2, size_t n);
功能:
比较s1和s2里面的亲前n字符的ASCII码的大小;
返回值:
等于0:代表s1和s2两个字符串相同;

四。多维数组

一.二维数组:

1.1二维数组的定义:

<存储类型><数据类型><数组名/标识符>[行数][列数]

(auto) int arr[3][4];

1.2二维数组的初始化:

完全初始化:

int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

部分初始化;

int arr[3][4] = {1,2,34,5,64,7,4};

int arr[3][4] = {{1,2},{3,4,5},{6}};

char buf[4][32] = {"hello","world","ni","hao"};

int arr[][4]:初始化时,二维数组的行数可以省略,列数不能省略;

1.3二维数组的赋值:和一维数组相同,只能一个一个的赋值;

int arr[3][4];

arr[0][0] = 1;

arr[0][1] = 2;

...

1.4二维数组的访问:

数组名[行号][列号];

arr[2][3] = 3;

二维数组的遍历:

int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

for(int i=0;i<3;i++)

{

for(int j=0;j<4;j++)

printf("%-3d",arr[i][j]);

puts("");

}

1.5二维数组名:

代表整个二维数组空间,二维数组名也代表整片空间的首地址,第一行所在的地址;

int arr[3][4];

arr[0];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值