欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指针C5知识点总结

程序员文章站 2022-07-12 15:37:59
...

指针知识点

1.指针的概念

指针是地址// p=&a[0][0];/p=*a;/p=&a;  

运算符:

①&取地址运算符  

 p=&a:把a的地址赋给指针变量p 
int 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';// ×




相关标签: C5 指针