C语言关键字const和指针的结合使用

 更新时间:2020年02月18日 14:46:51   作者:GDOU-Linkk  
这篇文章主要介绍了C语言关键字const和指针的结合,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

我们先定义三个变量

1、const int *p1
2、int const *p2
3、int *const p3
p1、p2、p3这三个指针都是指向int类型的,那它们有什么区别呢

写个代码测试一下


在这里插入图片描述

编译一下


在这里插入图片描述

可看到第11,12,16行报错,从中可得出以下结论:

const int * 与 int const *是一样的效果,指向的内存是不能改变的,即指针指向的内容是只读的,或者说是一个常量。不过指向的位置是可以更改的,即p1和p2可以重新指向别的常量。

而char *const 刚好相反,表示指针的内容是只读的,即指针指向的位置是不可修改的,但是指针指向的内存是可读可写的。

如果指向的内存和位置都是不能改的呢?

哈哈哈,肯定都能想到,

int *const const pointer 与 const int *const pointer 都是可以的。

那如果const和typedef一起用会怎么样?

//先定义个新类型
typedef int *intp;
const intp p1;
intp const p2;

p1和p2,哪个指向的位置不能变,哪个指向的内存不能变呢?

答案是:p1和p2是一样的,都是指向的位置不能变,即如果指向了a,就不能再指向b。

所以如果想指向的内容不能变,就不能用typedef来定义新类型了。
下面是验证代码和编译结果


在这里插入图片描述

在这里插入图片描述

总结

以上所述是小编给大家介绍的C语言关键字const和指针的结合使用,希望对大家有所帮助!

相关文章

  • 数据结构顺序表操作示例

    数据结构顺序表操作示例

    这篇文章主要介绍了数据结构顺序表操作示例,其中有在第I个元素前插入数据x,元素从0开始计数、删除第i个元素,元素从0开始计数的方法,需要的朋友可以参考下
    2014-03-03
  • c语言快速排序算法示例代码分享

    c语言快速排序算法示例代码分享

    快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)
    2014-02-02
  • C语言数据在内存中的存储详解

    C语言数据在内存中的存储详解

    本篇文章是C语言编程篇,主要为大家介绍C语言编程中数据在内存中存储解析,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • c语言10个经典小程序

    c语言10个经典小程序

    c语言的经典程序,学习c语言的初学者可以参考下
    2013-01-01
  • C++中std::vector的6种初始化方式

    C++中std::vector的6种初始化方式

    这篇文章主要介绍了C++中std::vector的6种初始化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言实现十进制转任意进制的代码详解

    C语言实现十进制转任意进制的代码详解

    这篇文章主要介绍了C语言实现十进制转任意进制,运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用ASCII码值  数字字符和大写字母 相差55的特性来解决,文中有详细代码示例,需要的朋友可以参考下
    2024-05-05
  • 利用Matlab制作一款刮刮乐抽奖特效

    利用Matlab制作一款刮刮乐抽奖特效

    七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-03-03
  • C++中对C语言结构体用法的扩充

    C++中对C语言结构体用法的扩充

    今天小编就为大家分享一篇关于C++中对C语言结构体用法的扩充,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C语言修炼之路初识分支句 循环助本心上篇

    C语言修炼之路初识分支句 循环助本心上篇

    现实生活中我们经常需要根据不同的条件做出不同的选择。程序设计中也需要根据条件来选择不同的程序进行处理,这称之为分支结构,当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,一般情况下,C 程序员偏向于使用 for(;;) 结构来表示一个无限循环
    2022-03-03
  • C语言 sprintf 函数详情

    C语言 sprintf 函数详情

    这篇文章主要介绍了C语言 sprintf 函数,文章主要包括sprintf 函数简介、sprintf 函数使用和简单说明了一下sprintf、fprintf、printf 函数区别,需要的朋友可以参考一下文章的具体内容
    2021-10-10

最新评论