指针2.0

  • 指针运算

 1)算数运算可以给指针加、减一个整数(+,+=,-,-=);递增递减(++\--)

 2)*p++

  a、取出p所指的数据,然后将p移到下一个位置

  b、* 的优先级低于 ++ 的优先级

  c、常用于数组类的连续空间操作,eg:遍历

  • 指针比较

 1)<、<=、==、>、>=、!= 都可以应用于指针

 2)比较它们在内存中的地址

 3)数组中的单元的地址肯定是线性递增的

  • 0地址

 1)指针不应该具有0值

 2)0地址可以用来表示:返回的指针是无效的;指针没有被真正初始化(先初始化为0)

 3)NULL是一个预定定义的符号,表示0地址,并不是所有编译器都适用

  • 指针的类型

 1)无论指向什么类型,所有的指针的大小都是一样的,因为都是地址

 2)但是指向不同类型的指针是不能直接互相赋值的

 3)这是为了避免用错指针

  • 指针的类型转换

 1)void* 表示不知道指向什么东西的指针,计算时与char* 相同(但不相通)

 2)指针也可以转换类型

  int *p = &i ; void*q = (void*)p;            //我不再当你是个int了,我认为你就是个void!

 3)这并没有改变p所指的变量的类型,而是让后人用不同的眼光通过p看它所指的变量

  • 指针的用途

 1)需要传入较大的数据时用作参数

 2)传入数组后对数组做操作

 3)函数返回不止一个结果,利用指针作为参数,代出结果

 4)需要用函数来修改不止一个变量

 5)动态申请的内存

  • 动态内存分配

 1)malloc

#include<stdio.h>
#include<stdlib.h>

void* malloc(size_t size);

  a、向malloc申请的空间的大小是以字节为单位的

  b、返回的结果是void* ,需要类型转换为自己需要的类型

(int*)malloc(n*sizeof(int))

  c、如果申请失败则返回0,或者叫做NULL

 2)free (malloc配套函数)

  a、把申请得来的空间还给“系统”

  b、申请过的空间,都要归还

  c、只能还申请来的空间的首地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值