C语言-指针

基本概念

指针:一个变量的地址,称为该变量的指针。
指针变量:一个用来存放另一个变量的地址的变量称为指针变量。
总结:指针是一个地址;指针变量是一个存放地址的变量。

定义指针变量

类型名 * 指针变量名(如:int * pointer_1)
——可以在定义指针变量时,同时对它初始化。如:int * pointer=&a;
扩展:
①指针类型有哪些?
由基本数据类型派生来的。包括int ,float ,char *等等。

引用指针变量

& 取地址符 &a,表示变量a的地址。
* 指针运算符 *p,指针变量p指向的对象。

牢记

①指针变量在Visual C++中占4个字节;在Turbo C++中占2个字节。
②a[0]与*(a+0)等价,均为&a[0]。即:*a[0]或 *(*(a+0))是a[0]的值。
(a,a+i,a[i],*(a+i),*(a+i)+j,a[i]+j 均为地址。)
③a[i][j]——>二维数组名(如a):指向行的。一维数组名(如a[0]):指向列元素的。(在指向行的指针前面加*就转换为指向列的指针。在指向列的指针前面加&就转换为指向行的指针。)

函数指针

1,概念:在程序中定义了一个函数,编译时为函数代码分配了一段存储空间,这段存储空间的起始地址称为这个函数的指针。
2,指向函数的指针变量:用来存放某一函数的起始地址
用法:int (*p) (int int); ——–p的类型用int (*)(int int)表示。

返回指针值的函数

1,定义:类型名 *函数名(参数列表);

指向指针数据的指针

1,定义:char **p;

内存的动态分配

1,建立内存的动态分配:通过系统提供的库函数(malloc/calloc/free/realloc)实现。
①malloc函数:在内存的动态存储区中分配一个长度为size的连续空间。
函数原型:void *malloc(unsigned int size);——–返回值为所分配区域的第一个字节的地址。
②calloc函数:在内存的动态存储区中分配n个长度为size的连续空间。
函数原型:void *calloc(unsigned n,unsigned size);——常用于保存数组(这就是动态数组)。
③free函数:释放指针变量p所指向的动态空间。
函数原型:void free(void *p);——–无返回值。
④realloc函数:已获得动态空间,想改变其大小,可以用realloc函数重新分配。
函数原型:void *realloc(void *p,unsigned int size);——p值不改变。
*****以上四个函数申明在stdlib.h头文件中
2,void指针类型
不指向任何类型的数据。仅提供一个纯地址,而不能指向任何具体的对象。

总结

使用指针的优点:
①提高程序效率;
②在调用函数时当指针指向的变量的值改变时,这些值能够为主调函数使用,即可以从函数调用得到多个可改变的值;
③可以实现动态存储分配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值