指针

1:指针的定义

指针变量:声明一个变量并使用地址作为该变量的值,该变量为指针变量  

指针定义:类型名 *指针变量名; 例:int *p; 

              注意:定义多个指针变量时,每一个指针变量前都要加上*;

2:指针的作用

如果指针指向一个变量的地址,那么就可以通过访问指针来间接访问那个变量(一般地用&给出变量的地址)

例:

int *p,a=3;
p=&a;
printf("%d",*p)//此时输出为a的值=3

当指针指向一个变量时,对指针所指向的变量赋值,相当于给变量赋值.

例:

int *p,a=3;
p=&a;
printf("*p=%d a=%d\n",*p,a);
*p=10;
printf("*p=%d a=%d\n",*p,a);

此时的运行结果为:

 

这个时候就运用指针就可以将之前的swap函数实现了(因为函数中的变量为临时变量,出了函数之后就没有作用了,所以没学指针之前用swap不能将两个数的值交换)

 

特别的,数组是一种特别的指针,所以当我们把数组传入函数进行操作时,发现数组出了函数后会发生改变,也就是说,现在可以用指针做和数组一样的事情;

例如数组求和:

3:动态内存分配函数

函数原型:void *malloc(unsigned size)

功能:在内存的动态存储区中分配一连续空间,其长度为size,若申请成功,则返回指向所分配空间的起始地址的指针,若申请不成功,则返回NULL。使用时常把malloc()的返回值转化为特定指针类型赋给另一个指针

4:计数动态存储分配函数

函数原型:void *calloc(unsigned n,unsigned size)

功能::在内存的动态存储区中分配n个连续空间,每一存储空间的长度为size,且全部初始化为0.若申请成功,则返回一个指向被分配内存空间的起始地址的指针,若不成功,则返回NULL.

 

5:动态存储释放函数

函数原型:void free (void *ptr)

功能:释放由动态存储分配函数申请的整块内存空间,ptr为指向要释放空间的首地址,如果ptr的值为空指针,则free什么都不做;释放后不允许再通过该指针去访问已经释放的块.

 

 

 

 

posted @ 2021-11-11 11:14  zz7zz  阅读(18)  评论(0编辑  收藏  举报