二位字符型数组:
char s[][10] = {"hello","world","china"};
1.定义指针:
char (*p)[10] = s;这样定义表示为 p指向二维数组s
*(*(p+i)+j) 表示二维数组中的s[i][j]元素
char s[10] = "hello";//存放字符串数据 s的数据类型 char[10]
char[10] s1[3]; //二维数组 //此时的二维数组的元素 是一个一维字符型数组
//定义一个存放 字符串 的一维数组
char *p = "hello"; //p的类型 char *
//char *的指针变量p 相当于代表一个字符串
char *p1 = "hello";
char *p2 = "world";
char *p3 = "china";
char* pstr[3]= {"hello","world","china"}; //数组中存放是 各个字符串的地址 也就是说数组中的每一个元素就是各个字符串的地址
2、定义一个指针指向指针针的数组
char* MMAX(char* *p,int len)
{
char ret = 0;
int i = 0;
char *max = *p;
for(i = 1;i < len ;i++)
{
if(strcmp(*(p+i),max) > 0)
max = *(p+i);
}
return max;
}
void *RE(char**begin,char**end)
{
char *t = *begin;
while(begin<end)
{
t = *begin;
*begin = *end;
*end= t;
begin++;
end--;
}
}
void *bubble(char**p,int len)
{
int i = 0;
int j = 0;
for(i = len;i >0;--i)
{
for(j = 0;j<i;j++ )
{
if(strcmp(*p+j , *p+j+1) < 0)
{
char *temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
char **q = pstr; //q 二级指针
char*是基类型 *是表示begin是一个指针变量 而 begin是变量名
3. 指针操作函数
-----------------------------------------
int a;
int *p = &a;
语法:
基类型 * 指针变量名
------------------------------------------
指针 + 函数:
通过指针 的方式 来调用函数
函数名 --- 代表函数的入口地址
int add(int a,int b) // 函数
// 函数名 - 代表函数的入口地址
// 函数名对应的数据类型
// int (int a,int b) //函数类型
// 代表一类函数
// 返回值为int型
// 带有两个int型的形参变量
说明:
1.可以定义一个函数类型的指针变量
来保存函数的入口地址
2.有了这个指针变量
通过指针变量 进行函数调用
回调函数 callback
func1()
{
}
func2()
{
}
choieSort(int *a,int len,int (*p)(int))
{
//func1
}
main()
{
choiceSort(a,len,func1);
}
//回调函数 --- 通过函数指针调用函数 就是回调
//c语言中,使用了 函数指针 实现回调
-------------------------------------------------------------
4.总结:
1.指针
指针概念
指针的定义 //基类型 * 变量名
指针的初始化 和 赋值
//野指针 NULL
指针引用
*p //理解 间接运算的过程 及 结果
核心用途
被调修改主调
使用方法:
1.要修改谁,把谁的地址传过去
2.被调函数中,一定要有对应的 *p运算
3.传过去的实参地址,一定要对应一块有效的内存空间
-------------------------------------------------------------
2.指针 + 数组
指针 操作 一维整型数组
指针 操作 一维字符型数组
核心思路:
1.定义一个什么类型的指针变量
//参考第2点
2.获得那个位置的地址 //数组的特点
//数组首元素的地址 &a[0] //就是数组名
指针操作数组元素的过程:
指针运算
p+1
*p
知识点:
1.快速排序
2.const
3.void
4.字符串相关的函数
strlen
strcpy/strncpy
strcat/strncat
strcmp/strncmp
--------------------------- ------------------------------------------
指针 + 二维数组
1.二维数组本质 ---一维数组
2.数组的特点
3.指针类型的定义
4.指针访问数组元素的 过程
*(*(p+i) + j)
指针 + 指针数组 //
指针 + 函数
----------------------------------------------------------------------