Linux C语言进阶

一、二维数组的定义和存储

一、二维数组的定义

1、二维数组的应用:图、方阵

2、数组元素的存放顺序:内存是一维的,二维数组:按行优先

a[1]:表示第一行,也表示a[1][]的所有元素

二、二维数组的初始化、遍历

1、元素的初始化

1、不是按顺序存放,部分初始化

 2、按顺序存放

3、二维数组只能省略行,不能省略列

1、打印杨辉三角形

 2、打印数组中的最大值,行,列

三、多维数组

二、字符数组和字符串

一、一维字符数组和字符串

1、字符数组的用法

1)“abc”='a''b''c''\0'

2)逐个字符赋值

 

3)0=\0=NULL

2、字符串的用法

4)以字符串的形式赋值

5)用%s打印数组中存放的字符串

这种情况只适合打印以\0结尾的字符串,单个字符赋值有可能出现错误

二、二维字符数组和字符串

1、在赋值的时候,列赋值比要用的大一些,所有的输入都可以用字符串来表示(留出\0的位置,简化输入)

字符串存储-------二维数组!!!

2、打印

1)打印字符串

2)用最原始的数组的形式

3、逆序输出字符串

1)字符串不变,逆序输出

2)字符串倒叙

4)gets和scanf的区别

gets可以取空格,scanf不可以

三、字符串处理函数(一)

man+函数名:查看函数手册

一、strlen函数(只数有效字符,不含\0)

二、strcpy函数--字符串拷贝函数

拷贝源码:

三、strcat函数---字符串连接函数

拷贝加连接

四、strcmp-----字符串比较函数

从左到右逐个字符,直到不同字符。

如果完全相同,字符串较短的比较小。

四、字符串处理函数(二)

man isalpha:

一、strncpy---复制指定长度的字符串

二、strncat---附加指定长度字符串

三、strncmp---只比较前几个字母

四、strncasecmp---忽略大小写比较字符串的大小

五、strchr---在字符串中查找指定字符,返回第一次出现的地址

strrchr---在字符串中查找指定字符,返回最后一次出现的地址

 

六、strstr---查找字符串

printf("%d",strstr(s1,s2)-s1);

//显示查找的字符串首字符的位次

在命令行界面也可以查找字符串

七、

八、toupper---小写转大写

tolower---大写转小写

五、指针的基本用法

一、地址和变量

1、bit:一位二进制

byte:一个字节=8bit

2、什么是指针?

内存的地址是指针

什么是指针变量?

存放地址的变量称为指针变量

3、指针变量的声明

4、变量的初始化

5、一个8位的16进制数是多少字节?

一位16进制对应的是4位二进制数,8个16进制对应4个8bit,所以对应4字节。

6、指针的目标:指针指向的内存区域中的数据成为指针的目标。

如果指针指向一个变量的内存空间,这个变量称为指针的目标变量。简称为指针的目标。

7、取目标地址的内容*px=*(&x)=x

8、

9、指针赋值

1)把变量地址赋值给指针

2)指针变量之间互相赋值

3)把数组地址赋给指针变量

10、

sizeof(p):存储指针变量p所占的内存

11、指针占几个字节

六、指针的运算

1、指针运算实际上就是地址运算,只能进行赋值运算、算数运算和关系运算

2、地址加一,表示的是这个数据类型的地址变量的地址加1,因此不同数据类型的地址变量相加减是没有意义的。

3、相同类型的指针相减:px-py表示的也是中间间隔的数据个数。

扭曲的式子:初学时指针类型和目标变量的数据类型严格保持一致。

二、指针的关系运算

1、指针的关系运算表示他们指向地址之间的关系

2、指针与整数变量之间的关系运算没有意义。

3、指针与0进行关系运算,判断指针是否为空。

七、指针与数组

1、指针与一维数组

2、x[i],*(p+i),*(x+i),p[i]表示的值相同

x+i:数组名+i

但是x++是错误的

例子:用指针完成数组倒置

3、区别x[1]和p[1]

八、指针与二维数组

一、一级指针便利二维数组

二维数组:

*(p+1):移动一个数据

*(a+1):移动一行

二、指针与二维数组

1、二维数组名常被用做行地址

三、行指针

1、行指针又称数组指针,存储行地址的指针

2、行指针的声明

可以理解为指针的步长是一行

int (*p)[列]

p=a

p[1][1]=a[1][1]

九、字符指针与字符串

一、字符指针与字符串上

1、字符指针是把字符串的首地址赋给指针

2、赋值方式

1)先定义字符串,指针指向字符串数组的首地址

2)用指针直接去定义字符串

此时字符串相当于一个全局变量,不能再用指针修改字符串的值

3)实现字符串链接函数

十、指针数组

一、指针数组的概念和用法

1、指针数组

2、指针数组的初始化

二、用一维指针数组访问二维数组

三、指针数组的应用-处理二维数组

二级指针

十一、多级指针、void指针以及const

多级指针、void指针以及const

1、

三、多级指针和指针数组

1、示例

2、多级指针

二级指针可以管理一级指针数组

四、void指针的使用

1、void指针的初始化

void *p;

2、void指针不确定数据类型,可以通过强制类型转换让变量指向任何数据类型的变量,在强制转换之前,不能进行任何指针的算数运算

赋值时可以不转换,但使用时(打印)必须转换

3、用void指针遍历一维数组

五、const变量、const指针

1、const变量,常量化变量,变量的值不能被修改了

1)const int *p

2)int const *p

3)const int *const *p

只能const int *const p=&a;

六、main函数是否可以带参数(涉及到const指针)

注意事项

常用命令

1、man isalpha

2、EOF

1)end of file,即文件结束符,EOF的值是-1。在文本文件中才能使用EOF作为结束符。

2)在使用scanf输入时,如果输入的数据正确,则scanf返回一个正整数,如果输入的是<ctrl+Z>组合键,则表示返回EOF,即-1。

3、Null相当于一个宏定义

#define NULL 0

4、C语言中,只有全局变量、static是放在静态区的,只有在程序结束的时候才释放内存,指针放在栈当中

5、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值