c语言中指针常量和常量指针

这篇具有很好参考价值的文章主要介绍了c语言中指针常量和常量指针。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

指针常量(Pointer to Constant)和常量指针(Constant Pointer)是C和C++中用于描述指针和常量的组合概念。

指针常量(Pointer to Constant)

指针常量本质是一个常量,它的值不能改变,即指针始终指向同一个地址。但通过指针可以修改所指向对象的值。

int* const ptr;//表示ptr是一个指针常量,指向一个整型常量对象。

常量指针(Constant Pointer)

常量指针本质是一个指针,它指向的对象是常量,即指针指向的对象的值不能改变。但指针本身是可变的,可以指向不同的对象。

const int* ptr;//表示ptr是一个常量指针,指向一个整型对象。

指针常量与常量指针的区别

  • 指针常量的重点在于保护指针的值,指针本身是不可变的,不能指向不同的对象,但可以通过指针来修改所指向的对象的值。
  • 常量指针的重点在于保护所指向的对象的值,指针本身是可变的,可以指向不同的对象,但不能通过指针修改所指向的对象的值。

指向常量的指针常量

const int * const ptr;//指向常量的指针常量,即ptr本身及其指向的对象都不能变

示例

// 指针常量
int num1 = 10;
int num2 = 20;
int* const ptr = &num1; // ptr是一个常量指针,指向num1
*ptr = 15; // 合法,通过指针修改了num1的值
// ptr = &num2; // 非法,常量指针的指向是不可变的

// 常量指针
const int num1 = 10;
const int num2 = 20;
const int* ptr = &num1; // ptr是一个指针常量,指向num1
// *ptr = 15; // 非法,不能通过指针修改所指向的对象的值
ptr = &num2; // 合法,指针可以指向不同的对象

Tips:
const关键字修饰*p或者int *p,就是常量指针,即指向常量的指针;
const关键字修饰p,就是指针常量,即指针是一个常量。

总结

指针常量是指指针的值不能改变,即指针始终指向同一个地址,但可以通过指针修改所指向对象的值;
常量指针是指指针指向的对象是常量,即指针指向的对象的值不能改变,但指针本身是可变的,可以指向不同的对象;
因此,指针常量保护了指针的指向地址不变,但允许修改所指向对象的值;常量指针保护了所指向对象的值不被修改,但允许指针指向不同的对象。文章来源地址https://www.toymoban.com/news/detail-687338.html

到了这里,关于c语言中指针常量和常量指针的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一、21.指针类型转换 | 指针的指针 | 指针与常量

    01.指针类型转换

    2024年02月06日
    浏览(39)
  • C语言常量(整型、实型、字符型、字符串、符号常量)

    对于C语言常量,该文章有详讲,由于文章太长,可参考如下思维导图和目录,可通过目录选择自己所需要的内容阅读。 整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制、和十六进制表示。 十进制表示: 由数字0-9,正、负号组成,如3

    2024年02月07日
    浏览(41)
  • 【C++】C 语言 和 C++ 语言中 const 关键字分析 ( const 关键字左数右指原则 | C 语言中常量的原理和缺陷 | C++ 语言中常量原理 - 符号表存储常量 )

    【C 语言】const 用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 ) 普通类型数据的常量定义时 , const 在 数据类型 的 左边 和 右边 其作用 是相同的 ; 指针数据的相关常量类型 : const 在 指针符号

    2024年02月11日
    浏览(50)
  • C语言 变量与常量

    a) extern :声明一个已定义的变量,不能重新赋值; 注意:不建议在头文件中定义全局变量,而在源文件中定义,然后在头文件中使用extern声明。 因为若头文件中定义了全局变量,然后多个源文件使用该头文件,编译时会报重定义错误。 b) const :修饰的变量不可变; c)

    2024年02月08日
    浏览(40)
  • GO语言的变量与常量

    go是一个静态语言 变量必须先定义后使用 变量必须要有类型 定义变量的方式: var 名称 类型 var 名称 =值 名称 :=值 例如: 这样就存了一个num类型为int的变量 上面使用简化的定义通过num自动判断后面的类型为int并赋值为1 第三种方式就是使用这种方式赋值 使用冒号加等于赋值

    2024年02月19日
    浏览(37)
  • 【Go语言】Go语言中的变量和常量

    Go语言中的变量和常量 1 变量 变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 Go 语言是强类型静态语言,所以变量的声明与赋值方式与 PHP/Python 等动态语言相比有很大的区别。

    2024年02月21日
    浏览(47)
  • Go语言基础之变量和常量

    标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123 是指编程语言中预先定义好的具有特殊含义的标识符。

    2024年02月12日
    浏览(42)
  • C语言整型常量的表示方法

    整形常量就是整常数,在c语言中,使用的整常数有八进制,十进制和十六进制三种  1)十进制常数:十进制常数没有前缀,其数码为0~9。 以下各数是合法的十进制整常数: 237、-568、65535、1627; 以下各数不是合法的十进制整 023 (不能有前导0)、23D (含有非十进  在程序中是根

    2024年01月18日
    浏览(40)
  • C语言——字符串常量初始化

            使用双引号括住字符串的字符来创建字符串常量。         使用字符数组来存储字符串常量。         使用字符串指针来初始化字符数组。         无论使用哪种方法,字符串常量在C语言中都是不可修改的。尝试修改字符串常量会导致未定义的行为。

    2024年01月23日
    浏览(51)
  • C 语言:类型转换与常量的细致理解

    有时,您必须将一种数据类型的值转换为另一种类型。这称为 类型转换 当您将一种类型的值分配给另一种类型的变量时,编译器会自动进行隐式转换。 例如,如果您将一个 int 值分配给一个 float 类型: 如您所见,编译器会自动将 int 值 9 转换为 float 值 9.000000。 这可能是危

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包