C语言 指针
2020-04-05 16:54:51 57 举报
AI智能生成
对C语言指针课程的内容进行归纳总结
作者其他创作
大纲/内容
指针
定义和初始化
定义:存放变量的地址
格式: 类型 *指针变量名
int *p;
char *p;
double *p;
float *p;
p 代表地址*p 代表指针内所指的内容
指针与数组
指针和一维数组
通过指针访问一维数组
通过首地址引用数组元素
*(a+i) 改变i
通过指针变量引用数组元素
用带下标的指针变量引用数组元素
函数中 一维数组名作为实参
指针与二维数组
行指针和列指针
p=a 不合法
int *p[4];int a[3][4];p=a[0][0];则p++=a[0][1];
列指针:int *p; 初始化:p=a[0]; p=*a; p=&a[0][0]; a[i][j]可表示为:*(p+i*n+j;)(n表示每行的容量); &a[i][j]; p[i*n+j];
int *p;int a[3][4];p=*a;则 p++=a[1][0];
函数中二维数组作为实参
主程序
main( ){ int a[3][4]; ....... Fun(a); ........}
函数程序
void Fun(int (*p)[4])
void Fun(int p[3][4])
void Fun(int p[ ][4])
指针与函数
函数间地址传递
借助指针变量返回多个值
函数指针
1、格式: 类型名(*函数指针变量名)() int (*p)( );
2、用函数名为指针赋值: 函数指针变量名=函数名
3、利用指向函数的指针变量调用函数 (* 函数指针变量名)(实参)
指针型函数: 返回值为指针类型的函数
指针数组
类型名 *数组名[常量表达式]char *ptr[4];
指针的指针(二级指针) 存放指针变量的地址
类型符 **指针变量名
指针的基本运算
1、取地址运算和间接访问运算
1、单目运算符(& 取地址)
2、‘*’可用于定义指针变量 或者访问指针所指的变量
整形变量a 的地址赋值给整型指针p 指针p指向变量a
2、指针变量的初始化
注意:1、可以用初始化的指针变量给另一个指针变量做初始值 2、不可用数值作为指针变量的初值,可以初始化为空
int *p=NULL;int *p='\\0';int *p=0;
3、指针的基本运算
指针与数字的运算
指针p + 1就是代表指针向右移动一个单元格 指针p - 1就是代表指针向左移动一个单元格
指针与指针
指针加法无意义指针减指针只能存在与同一个数组的两个指针中进行
*p++ :先取*p作为表达式,再将指针所指的变量的值+1(*p)++:指针所指的变量值+1
字符串
类型: 字符串+‘\\0’ 数组名代表数字的首地址
输入
scanf(\"%s\
gets(s);
fgets(字符数组名,范围,stbin);
输出
printf(\"%s\
puts(s);
通过指针访问字符串常量
通过指针访问字符数组 char *p=\"Hello\"; 或 char *p; p=\"Hello\";
1、 *(ptr+i);相当于str[i]2、 ptr++;移动指针
1、 将字符串常量的首地址赋给指针变量2、 通过移动指针变量依次访问字符串的每一个字符
将初值置为空,避免野指针造成危险 char *p=NULL;
字符串函数的应用: 通过指针访问字符串数组
从函数返回字符串指针
字符串作为函数参数
利用 ‘\\0’判断字符串中的字符是否结束
主函数: main( ){ char s[100]; ......... Fun(s); .........}
函数: void Fun(char *p) { ........... }
使用字符指针和使用字符数组处理字符串的区别
1、字符数组由若干元素组成,每个元素中放一个字符; 字符指针变量存放的是地址
2、可以对字符指针变量赋值,但是不能对数组名赋值
char *a; a = \"I Love China!\";
char parr[] = \"zifuchuanshuzu\
3、对字符指针赋初值
char *a=\"I love China!\";等价于char *a;a=\"I love China!\";
注意:字符指针变量赋的字符串是一个常量,是不能改变的; 而字符数组的元素是可以改变的;
4、地址分配
数组:char str[10];scanf(\"%s\
5、从值的可变性来说
指针变量的值是可以改变的,就是地址的改变; 数组名的值是不能改变的,它只能指向本数组的首元素地址;
6、 数组元素的引用
字符数组可以用下标法:str[1];地址法:*(str+1);字符指针可以用指针变量带下标法:p[1]
7、从指向的内容值的角度看
字符数组内的元素,都是变量,值是可以改变的; 但是字符指针数组内的元素的值并不是变量而是常量,常量不能发生改变
0 条评论
回复 删除
下一页