【void指针和const】

介绍const修饰指针的用法,有三种情况。还介绍了void指针的用法 

目录

一、void指针

二、const

三、main函数参数

总结与思考

一、void指针

1.定义:

void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量

一般形式为: void   * <指针变量名称> ;

对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算

 分析:

在把m、n的地址赋给p、q时存在一个隐式强制转换,这样等式两边类型才相同,然后在下面以整型格式输出时,为了满足格式必须要,转换成int *型才能符合要求;

在强制转换后,才能对p、q进行算术运算,因为强制转换类型之后才能知道存的是什么类型的数据,才能知道加1应该移动几个字节空间

注意:

32位机下指针类型都是4个字节,意思是指针存储的地址能达到32位,并不是指针加1就是移动四个字节,看加一后移动几个字节空间是看存储的是那种类型的数据

2.案例

void * malloc(size_t size);

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

void *(*start_routine)(void *),

void *arg);

void qsort(void *base,  size_t nmemb,  size_t size,  

int(*compar)(const void *, const void *));

void 指针在后续底层代码中用的比较多,因为在数据传入函数时还不知道该数据是什么类型,可以让void随机应变;

二、const

1.常量化变量的值

一般说明形式如下: const <数据类型> 变量名 = [<表达式>] ;

常量化变量是为了使得变量的值不能修改

变量有const修饰时,若想用指针间接访问变量,指针也要有const修饰。

2.常量化指针目标表达式

  一般说明形式如下: const <数据类型> * <指针变量名称>[= <指针运算表达式>] ;

常量化指针目标是限制通过指针改变其目标的数值 ,但<指针变量>存储的地址值可以修改

3.常量化指针变量

一般说明形式如下:    <数据类型> * const  <指针变量名称>[= <指针运算表达式>] ;

使得<指针变量>存储的地址值不能修改,但可以通过 *<指针变量名称> 可以修改指针所指向变量的数值

4.常量化指针变量及其目标表达式

一般说明形式如下: const <数据类型> * const <指针变量名> = <指针运算表达式> ;

常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值

三、main函数参数

1.argc代表输入了几个参数(包括命令指令),argv把这几个参数的以字符串形式存放起来


总结与思考

⭕主要介绍了const修饰指针的用法,有三种情况。还介绍了void指针的用法

⭕思考 void指针有什么作用? main函数是否可以带参数(涉及到const指针)?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛的守护神_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值