【数组】
多个相同的基本数据类型元素 组成 有序集合 --- 构造数据类型
数组 --》 成员 --》 数据元素
基本数据类型 : char int 。。。
数组类型:char int 。。。
int data[10]; 数据类型 存储类型
int data[10] = {0};
static int data[10];
char str[20] = {0};
strlen: 字符串长度,不包括尾零;
strcat: 第一个字符串所在的预先准备存储空间必须足够大!
赋值:
char string[20];
循环 + getchar()
strcpy
赋值:
int data[10];
for + scanf
遍历 --- for
冒泡排序:依次两个两个比,比较后马上交换,每次比较找最大值,最大值放在靠后的位置上,最大值同下一个数据 参与下次比较;
【作业讲解】
1. 自己编程实现strcat、strlen功能,写main里(不能调用库函数strlen);
strlen :
“hello” 找‘\0’ 5
“hello world” 找‘\0’ 11
1. getchar
2. scanf
3. gets
2. strcat:
i = n dest[i] == '\0'
j = 0 dest[i++] = src[j++];
dest = src , i++, j++;
dest[i] = '\0';
【strcmp】字符串比较
格式:strcmp(字符串1,字符串2)
功能:比较两个字符串
比较规则:对两串从左向右逐个字符比较(ASCII码),
直到遇到不同字符或‘\0’为止
返值:返回int型整数
a. 若字符串1< 字符串2, 返回负整数
b. 若字符串1> 字符串2, 返回正整数
c. 若字符串1== 字符串2, 返回零
strcmp(str, "");
" " && "" && ' '
空格字符串 空字符串 空格字符
error ''
'0' && 0 && ‘\0’
48 0 0
【strcpy】字符串拷贝
strcpy(字符数组1,字符串2)
功能:将字符串2,拷贝到字符数组1中去
返值:返回字符数组1的首地址
说明:字符数组1必须足够大
拷贝时‘\0’一同拷贝
不能使用赋值语句为一个字符数组赋值
【一维数组】 int data[10] = {1,2,3,4,5,6,7,8,9};
【二维数组】 目前 : 数据类型 ---》 基本数据类型
二维数组是由N个元素(一维数组)组成,每个元素a[i]由一维数组组成
int data[3][4]
data[0] data[1] data[2]
【整型数组】
【字符数组】
多个字符串, 行地址访问字符串
行地址 ---》 行指针
地址---》指针
--------------------------------------------------
【指针】
【指针变量】
1 . 声明:<数据类型> * <指针名字> ;
char i = 10; (0x00002000)
char * data;
2. 初始化值:
char *data = &i;
char *p = NULL;
3. 赋值;
char * data;
data = NULL;
char *data = NULL;
data = &i;
【野指针】防止野指针!
【NULL】 空指针
(void *) 0
【间接访问】【直接访问】
10
i 直接访问
*data 间接访问
0x00002000
&i 直接访问
data 间接访问
【指针运算】
【指针与常量 + -】
int a[4] = {10, 7, 5, 1};
int *p = &a[1];
p = p+1;
*p == 5;
【指针 ++ 、 --】
int a[4] = {10, 7, 5, 1};
int *p = &a[1];
*p++;
*++p;
【指针与指针相减-】
int *p= &a[1]; int *q=&a[3];
p - q == ;
【指针关系运算】
>
<
>=
<=
!=
==
int *p;
char *q;
【一级指针】存储普通变量的地址
【二级指针】存储一级指针变量的地址
【一级指针遍历一维数组】
#define N 10
int a[N] = {11,12,13,14,15,16,17,18,19,20};
int * p = &a[0];int i;
//int *p = a;
for(i = 0; i<N; i++){
// printf("%d\n", a[i]);
// printf("%d\n", *(a+i));
// printf("%d\n", p[i]);
printf("%d\n", *(p+i));
}
【】
int data[10];
int *p = &a[0];
//int *p = data;
int data[3][4];
int *p = &data[i][j];
//int *p = data;
【作业】
1. 杨辉三角
2. 用指针实现数组逆序(整型);