一、二维数组的定义和存储
一、二维数组的定义
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、