一维数组
一维数组的定义
顺序关系的若干个变量的集合,内存是连续的
数组名是内存首地址,是地址常量。sizeof(数组名)是数组占用的总内存空间
内存字节数=数组维数*sizeof(元素数据类型)
定义数组必须知道数组的大小,小心越界(下标从0开始)
一维数组的引用
先定义,在引用。如果不初始化的话,就可能会出现随机数
static数组自动赋初值,为0;
求数组的大小sizeof(arr)/sizeof(数据类型)sizeof(arr[0]);
冒泡排序
二维数组
二维数组的定义
内存是一维的,存放按行序优先
二维数组的引用
int arr[2][3]={{1,2,3},{4,5,6}}
可以不写行数,但列数必须写,数组名就是首地址
printf("%p ",arr);指向其首元素的指针
printf("%p ",&arr);指向整个数组的指针
字符数组
字符数组初始化
逐个字符赋值,依“\0”结束
字符数组初始化二维数组
逆序输出字符串
字符串函数strlen
头文件string.h
常见的字符串处理函数
1.strlen 求字符串的长度
2.strcpy 字符串拷贝
3.stract 字符串连接
4.strcmp 字符串比较
strlen(字符数组)不包括“/0”
\xhh 表16进制 \ddd 表8进制
字符串函数strcpy
strcpy(字符串1,字符串2),把字符串2拷贝到字符串1中,字符串1足够大
stract和strcmp
stract("字符串1","字符串2"),把字符串2加到字符串1后
strcmp("字符串1","字符串2"),从左到右依次比较每个字符的ASCII值
相同返回值是0
字符串1>字符串2,返回正整数
字符串1<字符串2,返回负整数
字符串的拓展用法
strncpy(p,p1,n)复制指定的长度
strncat加指定长度
strncmp比较指定长度字符串
strcasecmp,不管大小写比较字符串
指针
指针的基本用法
c语言使用指针可以:
程序简洁、紧凑、高效
有效的表达复杂的数据结构
动态分配内存
得到多余一个的函数返回值
指针的概念
内存单元的地址称为指针
<存储类型> <数据类型> * <指针变量名>
指针的含义
px,指针变量,他的内容是地址量
*px,指针所指向的对象,他的内容是数据
&px,指针变量占用的存储区域是地址,是一个常量
指针就是内存单元的地址
指针有多少个字节 ,取决与是多少位,64位8个字节,32位4个字节
指针的运算
两个指针的相减量等于整数值
NULL指针
指针和数组
指针变量就是地址变量,数组的指针是地址常量
数组元素反序
指针和二维数组
二维数组被称为行地址,数组名+1是移动一行元素
数组指针
字符指针
字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。
字符串常量
当一个字符指针指向一个字符串常量时,不能修改指针指向的对象的值(静态存储区)
静态存储区:全局变量、static局部变量、字符串常量
实现字符串连接功能
不使用字符串函数,将其放到另一个字符串中