首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

指针常量常量指针区别_指针常量指向常量

指针常量中,指针自身值是一个常量,不可改变,始终指向同一个地址。在定义同时必须初始化。...int *p, int const *p) 常量指针本质上是一个指针常量表示指针指向内容,说明该指针指向一个“常量”。...在常量指针中,指针指向内容是不可改变指针看起来好像指向了一个常量。...错误,指针常量不能在定义后赋值 const int * const ptr6 = &m; // 指向常量指针常量,具有常量指针指针常量特点,指针内容不能改变,也不能指向其他地方,定义同时要进行初始化...”并返回其首地址,此时str由指向字符串常量”apple”首地址变为指向字符串常量”orange”首地址,str指向地址发生了变化,但str是指针常量不能被修改,所以错误。

1.3K20

c++常量指针指针常量_指针指向二维数组

** 一:常量 ** 常量指针,指针常量,常量指针常量 a)常量定义:不可修改值,例如250,’A’ b)const关键字功能:将变量常量化,四种形式 (1)const可以修饰普通变量,一旦修饰该变量...,该变量就当做常量看待,不可再更改 Const int a=250;//将变量a常量化 A=200;//gcc编译器报错 (2)常量指针:不能通过指针变量来修改指向内存区域数据,主要目的是保护数据不可篡改...*pa=200;//gcc编译报错 Printf(“a=%d\n”,*pa);//可以查看 int b=300; pa=&b;//pa重新指向b变量,可以修改指针变量本身保存地址 *pa=400...;//gcc编译报错 (3)指针常量(不太用) 指针永远指向一块内存区域,不能再指向别的内存,但是可以修改指针内存值 例如: int a=100; int * const pa=&a;//定义指针常量...*pa=300;//可以 printf("a=%d\n",*pa); int b=200; *pa=&b;//不可以,gcc报错 printf("a=%d\n",*pa); (4)常量指针常量指针本身指向内容都不可修改

71720
您找到你想要的搜索结果了吗?
是的
没有找到

指针指向常量_常量指针四种

const关键字 指针常量常量指针都离不开const关键字,我们先来了解一下什么是const关键字,const被用来定义常量,如果将一个变量加上const关键字,则被修饰变量值将无法改变。...下面是const修饰变量用法: const int a = 6; 或者 int const a = 6; 此时变量a值无法改变,只能访问,不能改写 指针常量 指针本身是一个常量,不能更改指针指向地址...p指向值为:200 a值为:200 b值为:200 常量指针 常量指针指的是一个常量,所以指针指向值是不能改变,但是指针指向地址是可以改变 #include using...:200 a值为:100 b值为:200 区别 注意指针常量常量指针区别,指针常量只能改变值,不能改变地址,常量指针只能改变地址,不能改变值。...如果要想值地址都不改变可以同时在前后都加上const关键字 例: int a = 100,b = 200; const int * const p = &a; // 此时指针p指向a地址,指针指向不能指向别的值

65210

指针常量常量指针

指针常量 顾名思义 这是一个指针类型常量!常量特点就是不可改变,所以被指针指向常量地址也是不可以变。...可以看到我们在定义并初始化一个指针常量之后,再次修改它指向是不被允许,但是它指向地址值是可以改变 常量指针 本质上是一个指针常量表示指针指向内容 比如整型指针 字符指针 等等 常量指针指向内容是不可改变...常量指针特点就是指向地址不能变化 str目前指向是字符串常量 apple首地址 即'a'地址 *a就表示字符'a' 那我们能修改吗,答案是不能 因为apple是常量 之前我们在字符串也阐述过...这里不再赘述 那我们是否能修改指针指向 改变字符串内容 str = "orange"; 答案也是不能 orange也存放在常量区 他在常量地址也就是字符串首地址 但是str是指针常量 不可以修改...1.如果想要实现修改str,首先要去掉指针常量 使他可以修改指向地址 然后就可以指向常量区新内存地址 2.也可以把指针常量改成常量指针(可以修改指针指向 不能修改地址内容) #include<stdio.h

14020

详解 常量指针指针常量

说一下 常量指针指针常量 区别。 常量指针   指向常量指针,也就是说指针指向对象是常量指向常量不能修改。指针不是一个常量, 可以把指针指向别一个常量。...常量指针是我们最常用,一般声明形式如下: const int *p; int const *p; 例: int a(1), b(3); const int *...不可以对指向内容做修改: *p = 3; // 错误 指针常量   指针指向地址不可以改变,地址内容可以通过指针改变。指针常量在定义时必须赋值。...不能对指向地址进行修改: p = &b; // 错误 我们也可以这样记 const 在谁前边谁就不可以修改: 常量指针 : const 在指针前边,我们就不可以修改指针。...指针常量 : const 在变量前边,我们就不可以修改指针地址。

1.2K70

常量指针,指针常量区别是什么_指针常量常量指针

定义: 又叫常指针,可以理解为常量指针,也即这个是指针,但指向是个常量,这个常量指针值(地址),而不是地址指向值。...特点: 常量指针指向对象不能通过这个指针来修改,可是仍然可以通过原来声明修改; 常量指针可以被赋值为变量地址,之所以叫常量指针,是限制了通过这个指针修改变量值; 指针还可以指向别处,因为指针本身只是个变量...指针所保存地址可以改变,然而指针指向值却不可以改变 指针本身是常量指向地址不可以变化,但是指向地址所对应内容可以变化; 表示形式: int* const p1; 三、两者区别 //——-...,即常量指针不可修改其指向地址 p1 = &b; //OK,指针还可以指向别处,因为指针只是个变量,可以随意指向; //——-指针常量——-// int* const p2 = &a; a =...//p2 = &b; //Error,因为p2是const 指针,因此不能改变p2指向内容 补集一个: //——-指向常量常量指针——-// const int* const p3 =

1.1K30

常量指针指针常量详解一样吗_指针常量还是变量

说一下 常量指针指针常量 区别。 常量指针   指向常量指针,也就是说指针指向对象是常量指向常量不能修改。指针不是一个常量, 可以把指针指向别一个常量。...不可以对指向内容做修改: *p = 3; // 错误,常量指针不变常量,如果指针指向了某个地址,在解引用后不能去修改指针变量指针常量   指针指向地址不可以改变,地址内容可以通过指针改变...指针常量在定义时必须赋值。...不能对指向地址进行修改: p = &b; // 错误,指针指向地址不可以改变,地址内容可以通过指针改变 我们也可以这样记 const 在谁前边谁就不可以修改: 常量指针 : const 在指针前边...指针常量 : const 在变量前边,我们就不可以修改指针地址。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

59020

C++:18---const关键字(附常量指针指针常量常量指针常量

也可以用const来修饰指针指向常量指针不能用于改变其所指对象常量只能由常量指针指向,不能由非常量指针指向 const double pi = 3.14; double *ptr = &...指向常量指针)。...指向可以改,但是不能通过该指针改变所指向值 这种类型const也被称为“底层const”:表示指针指向值是个常量 指针常量:(指针常量)。...指向不可以改,但可以通过该指针改变所指向值 这种类型const也被称为“顶层const”:表示指针本身是个常量 常量指针常量:不可以修改指向,也不可以修改所指向值 const int* pa;...pa = 1; //不能通过常量指针修改所指对象指针常量,因为指针是个常量,而不是类型是常量,因此有下面的规则: 只能指向于非常量,不能指向常量(因为放置指针常量修改常量

1.3K10

C++ 指针常量常量指针

指针常量常量指针这个概念是一样,英文里没有pointer const这个词,只有pointer to constconst pointer这两个词。...; //2 int const* p; //3 int * const p; 其中12是一种,这种情况下不能使用指针修改指向数据值,但是也仅仅是不能使用指针p修改而已,p指向值本身如果不是常量的话那么还可以直接对值修改...所以被指向数据值到底能不能改变根本不由指针声明方式决定,而是该数据本身是常量还是变量。.../合法 p = &b;//不合法 以上就是所谓指针常量常量指针所包含概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类第二类到底哪个叫做指针常量,那个叫做常量指针呢?...但是在《C Primer Plus》中将第一类叫做指向常量指针,也就是在文章开头提到pointer to const,那么第二类也就是const pointer了,但是这样一来,他就已经百度百科说法反了

1.6K70

指针常量,常指针指向常量指针(从我大一写QQ空间迁移过来)

1.指针常量 从字面意思可以看出,指针是一个常量,也就是地址不能被修改。 int* const p 特点是指针指向数值可以改变,然而指针所保存地址却不可以改变。...2.指向常量指针 const int *p或者int const *p 特点是指针所保存地址可以改变,然而指针指向值却不可以改变。...3.指向常量指针 const int const*p 特点是指针所保存地址不可变,指针指向数值也不可变 4.空指针 顾名思义,就是保存地址为空指针 int...这样就会有内存丢失,也就是所谓内存泄漏。 因为第一行我们在堆中申请了一块int型区域,并且用指针p指向该空间。但是紧接着我们又在堆中申请了一块int型区域,用p指向了该空间。...所以此时指针p指向地址具有不确定性,故而称作迷途指针,避免方法是将指针初始化为空指针

23300

指针(二) - (const)指针常量

const使用 声明一个常量 关键字const用来告诉编译器一个一旦被初始化过变量就不能被修改 int a; const int n; 一 常量指针 指针指向一个常量 修饰指针指向 #include...printf("%d\n", num); int const* p3 = # //*p3 = 100; printf("%d\n", num); return 0; } // 不能通过指针修改指向内容...(必须初始化变量) // 可以改变指针指向指针常量 指针本身是一个常量 修饰指针本身 // 指针常量: int a = 0; int* const pa = &a; // pa = NULL; *...pa = 100; // 可以通过指针修改指向内容 // 不能改变指针指向(必须初始化指针) 三 常量指针常量 指针本身是一个常量,指向一个常量 同时修饰 // 常量指针常量 const int b...= 0; const int * const pb = &b; // pb = NULL; // *pb = 0; // 不能通过指针修改指向内容(必须初始化变量) // 不能改变指针指向(必须初始化指针

39130

【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串指针 | 指向堆内存指针 )

文章目录 一、字符串 一级指针 内存模型 1、指定大小字符数组 2、未指定大小字符数组 3、指向常量字符串指针 4、指向堆内存指针 一、字符串 一级指针 内存模型 ---- #include <stdio.h..., 声明 数组 , 数组大小 5 字节 , 为其赋值时 , 使用了 “abc” 字符串常量 ; 在 全局区 常量区 存放 “abc” 字符串常量 ; 使用 “abc” 常量数组 赋值 , 注意数组最后一位是...字节 ; // 栈内存数组 不指定大小 char array2[] = "123"; 3、指向常量字符串指针 在 栈内存 中 , 定义 局部变量 指针 p , 没有为该指针分配内存..., 该指针指向 字符串常量 “def” ; 在 全局区 常量区 中 , 定义 字符串常量 “def” ; // 定义指针 , 使用字符串赋值 char *p = "def"; 4...、指向堆内存指针 先在 堆内存 中 , 分配 5 字节内存 ; 然后 在 全局区 常量区 中 , 定义 字符串常量 “456” ; 最后 将 字符串常量 “456” 拷贝到 堆内存 分配 内存中

2.3K20

指针、引用常量一些“故事”

C++也算是学了有些年头,可惜还是不甚了解,这不,今天对于指针、引用常量这三个在C++中处处可见东西又有些懵里懵懂了,也罢,今天就稍稍学究一下,再尽力整理一番其中一些“故事”吧,一则帮助自己记忆...常量指针常量指针指向常量指针,所指内容是不能更改(read-only),但指针本身是可以修改    示例:const Object* objPtr、const int *iPtr   2...指针常量指针常量,即本身为常量指针,所指向内容是可以修改,但指针本身是不可以修改   示例:Object* const objPtr、int * const iPtr   3. ...引用本身即带有常量语义(类似int& const 代码表述会引起编译错误),即你无法改变一个已经赋值引用本身,类似的赋值操作所改变仅是引用所引用(指向数据,并不改变引用本身,所以引用非常类似指针常量...对于一般数据类型(基本类型自定义类型)而言,const位置并不影响其常量语义,例如const int  int const 都表示该int数据为常量,没有区别。   7.

57010

【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

是 变量名称 一个别名 ) 编译器实现 : 编译器将引用实现为 int * const b 指针 , 其指针本身是常量 , 即存储地址是不可变 , 指针指向内容是可变 ; ( 既然引用是一个...出现在 * 左边时, 指针指向数据为常量, 指向数据不可改变; 右指 ( 指针常量 ) : const 出现在 * 右边时, 指针地址本身是常量, 指针地址不可改变; 指针常量 : 表示该指针本身是一个常量...; 常量指针 : 表示指向一个常量指针 ; IV ....常引用 ---- 常引用 : ① 常引用简介 : 引用本身是一个常量指针 , 指针本身地址不可改变 , 常引用 在常量指针基础上 , 将指向数据也设置成常量 , 即不能通过该引用修改变量值 ;..., 相当于一个 指针常量 , 也指向一块内存空间 ; 引用与指针不同点 : ① 引用比指针更严格 : 引用在定义时必须被初始化 , 而且只能初始化这一次 , 相当于 指针常量 ; 指针 是可变

1.2K10

PHP中预定义常量魔术常量

魔术常量(8个) 1、__LINE__ 返回文件中的当前行号。 2、__FILE__ 返回文件完整路径和文件名。如果用在包含文件中,则返回包含文件名。...自 PHP 5 起本常量返回该函数被定义时名字(区分大小写)。在 PHP 4 中该值总是小写字母。 5、__CLASS__ 返回类名称(PHP 4.3.0 新加)。...自 PHP 5 起本常量返回该类被定义时名字(区分大小写)。在 PHP 4 中该值总是小写字母。 6、__TRAIT__ Trait 名字(PHP 5.4.0 新加)。...自 PHP 5.4 起此常量返回 trait 被定义时名字(区分大小写)。Trait 名包括其被声明作用区域(例如 Foo\Bar)。...此常量是在编译时定义(PHP 5.3.0 新增) 预定义常量 PHP_VERSION PHP 程序版本,如4.0.2 PHP_OS

4.3K30

变量常量

变量常量 2019-04-07 5分钟阅读时长 以下是Golang中变量常量系统总结: 变量 变量是程序中用于存储数据以及在运行过程中可以改变值一种元素。...例如: x := 10 除了基本类型外,还可以使用复合类型(如数组、切片、结构体等)来定义变量。对于复合类型变量,可以使用点号“.”来访问其属性或方法。 常量 常量是程序中固定不变值。...好,以下是Golang中变量常量高级技巧细节: 指针 指针是一个变量,其值为另一个变量地址。在Golang中,可以使用“&”操作符获取一个变量地址,并将其赋值给指针变量。...例如: var x int = 10 var ptr *int = &x 数组切片 数组切片是Golang中最基本数据结构之一,用于存储一段相同类型数据。...在Golang中,可以使用以下语法来定义数组切片变量: // 定义一个长度为3整型数组 var arr [3]int // 定义一个长度为3整型切片 var slice []int = make

12710
领券