指针C5知识点总结
指针知识点
1.指针的概念
指针是地址// p=&a[0][0];/p=*a;/p=&a;
运算符:
①&取地址运算符
p=&a:把a的地址赋给指针变量pint a,*p;
p=&a;
简化为:
int a,*p=&a;//定义指针变量的同时为指针变量赋初值叫做指针变量的初始化;若无初始化或赋值,指针变量的值是一个随机数,随机指向
②*指针运算符(取指针指向的单元的内容)
printf("%d",*p);
2.分类
指针变量:存放地址的变量,简称指针
格式:数据类型 *指针变量名 eg. int *p
数组指针(行指针):定义一个指向一维数组的指针
格式:数据类型 (*指针变量) [N] //N为指针变量指向的一位数组元素的个数
a[i][j]:a[i]+j / *(a+i)+j / *(p+i)+j
float (*p)[4];
scanf("%d",*(p+i)+j);
指针数组:存储多个地址
格式:类型标识符 *数组名[数组长度]; eg. int *p[4];//包含了4个元素p[0] p[1] p[2] p[3]
函数指针:指向函数的指针变量
格式:类型标识符(*指针变量名)() //类型标识符为函数返回值的类型。
3.指针与数组
①int a[10] a和&a[0]都表示数组首地址
↓等价于
int *p=&a[0]; 或int *p=a; //p指向了数组a的第一个元素。*p=1的意思是:a[0]=1;
②指针的运算:
加减型※
int a[20],*p;
p=a;
p=p+n //p指向当前元素后的第n个存储单元
③一维数组:
例子:
int *p,a[5];
p=a; //p指向一维数组第一个元素
①下标法:a[i] p[i]
②指针法:*(a+i) *(p+i)
④二维数组:
公式:a[i][j]的存储地址:&a[0][0]+i*N+j
例子:
int a[3][4],*p;
p=&a[0][0]; //p指向二维数组的第一个元素
a[i][j]的3种表达方式:
*(&a[0][0]+4*i+j)
*(p+4*i+j)
p[4*i+j]
4.指针与字符串
char *p="lovezczh"
或
char *p;
p="lovezczh";//p指向字符串
字符数组的各元素可以修改,但是字符指针指向的字符串常亮不能修改
char str[ ]="lovezczh";
char *p="lovezczh";
修改:
char str[1]='i'; //√ 单引号
p[1]='i';// ×
上一篇: 初阶指针知识点总结
下一篇: C语言指针关键知识点总结