C语言(16)指针(iv)
指针 操作 二维字符型数组
char s[][10] = {"hello","world","china"};
char (*p)[10] = s; //p指向二维数组s
char s[10] = "hello";//存放字符串数据
char *p = "hello"; //p指向字符串常量区
char s[10]; //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"}; //数组 --- 数组中存放是 各个字符串的地址
//地址 ---存放这地址数据的数组 --- 指针的数组 ---指针数组
char **q = pstr; //q 二级指针
指针 + 函数:
通过指针 的方式 来调用函数
函数名 --- 代表函数的入口地址
int add(int a,int b) // 函数
// 函数名 - 代表函数的入口地址
// 函数名对应的数据类型
// int (int a,int b) //函数类型
// 代表一类函数
// 返回值为int型
// 带有两个int型的形参变量
说明:
1.可以定义一个函数类型的指针变量
来保存函数的入口地址
2.有了这个指针变量
通过指针变量 进行函数调用
知识点总结:
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)
指针 + 指针数组 //
指针 + 函数
----------------------------------------------------------------------