指针的基础

1.指针变量的定义:类型说明符  *变量名;例如:int *p = &a(*号是标识符,表示我们定义了一个指针变量p,里面存放了int类型a的地址);

指针就是地址,地址就是指针;

2.*的作用:1)标识符,用在定义指针的时候,表示我定义了一个指针变量 int *p;

                   2)取值运算符,取了指针所指向的空间里面的内容;

                   3)乘号;

int a=10;        int *p = &a;可以得出p=&a(改变p的指向);*p=a(间接改变a的值);

3.指针的数据类型大小在32OS永远是4个字节,64os为8个字节,

不会因为指向的数据类型而发生改变。

 Int * char * double * float * 都是四个字节。

4.const

Const int *p :const 修饰了*P,所以*p不能被改变,但是和p没关系,p还可以改变指向

Int const *p:const 修饰了*P,所以*p不能被改变,但是和p没关系,p还可以改变指向

Int * const p:const 修饰了P,所以p不能被改变,但是和*p没关系,*p还可以改变

Const int const *p:const修饰了*P,所以*p不能被改变,但是和p没关系,p还可以改变指向

Int const * const p:p和*p都不能被改变。

const 在*的那个地方,如果在*的左边,*p不能被改变,如果在*的右边 p不能被改变

5.指针和一维数组

6.指针的运算   一维整型数组和指针

Int arr[5] = {1,2,3,4,5};

Int *p = arr;int *p = &arr[0]

7.指针数组和数组指针

指针数组:int(*p)[5]   是一个指针,指向一个数组; 

数组指针:int *p[5]  是一个数组,里面放的是指针;

8.数组指针的运算

p+1:往地址增大的方向移动一个数组类型,p的指向没有改变

p-1:往地址减小的方向移动一个数组类型,p不改变

p++:增大的方向移动一个数据类型,p的指向已经改变

p--:减小的方向移动一格数据类型,p改变

9.malloc和free

Malloc和 free

 #include <stdlib.h>

void *malloc(size_t size)

作用:在堆区申请一片空间

返回值:成功返回申请空间的首地址,失败返回NULL

参数:想要申请多大的空间用sizeof计算

Void *是空指针,空指针是存在的,但是void类型的变量是不存在的。空指针也叫万能指针。

void free(void *ptr)

作用:释放申请到的空间

参数:申请空间的首地址

#include <string.h>

void *memset(void *s, int c, size_t n)

作用:清空申请到的空间

参数1:申请到空间的首地址

参数2:用什么数据去清空

参数3:清空多大的空间

例如:手动申请一个动态数组

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值