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

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

**要有具备扎实指针知识…… 了解引用指针一些注意事项: 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式计算结果绑定在一起 类型要严格匹配 一、常量指针...定义: 又叫常指针,可以理解为常量指针,也即这个是指针,但指向是个常量,这个常量指针值(地址),而不是地址指向值。...特点: 常量指针指向对象不能通过这个指针来修改,可是仍然可以通过原来声明修改; 常量指针可以被赋值为变量地址,之所以叫常量指针,是限制了通过这个指针修改变量值; 指针还可以指向别处,因为指针本身只是个变量...指针常量值是指针,这个值因为是常量,所以不能被赋值。 特点 它是个常量!...指针所保存地址可以改变,然而指针所指向值却不可以改变 指针本身是常量,指向地址不可以变化,但是指向地址所对应内容可以变化; 表示形式: int* const p1; 三、两者区别 //——-

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

指针常量常量指针

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

14920

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

大家好,又见面了,我是你们朋友全栈君。 1、指针常量——指针类型常量(int *const p) 本质上一个常量指针用来说明常量类型,表示该常量是一个指针类型常量。...在指针常量中,指针自身值是一个常量,不可改变,始终指向同一个地址。在定义同时必须初始化。...int *p, int const *p) 常量指针本质上是一个指针常量表示指针指向内容,说明该指针指向一个“常量”。...在常量指针中,指针指向内容是不可改变指针看起来好像指向了一个常量。...错误,指针常量不能在定义后赋值 const int * const ptr6 = &m; // 指向“常量指针常量,具有常量指针指针常量特点,指针内容不能改变,也不能指向其他地方,定义同时要进行初始化

1.3K20

详解 常量指针指针常量

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

1.2K70

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

** 一:常量 ** 常量指针,指针常量,常量指针常量 a)常量定义:不可修改值,例如250,’A’ b)const关键字功能:将变量常量化,四种形式 (1)const可以修饰普通变量,一旦修饰该变量...,该变量就当做常量看待,不可再更改 Const int a=250;//将变量a常量化 A=200;//gcc编译器报错 (2)常量指针:不能通过指针变量来修改指向内存区域数据,主要目的是保护数据不可篡改...;//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)常量指针常量指针本身和指向内容都不可修改...1字节,2字节数据 //2、获取一字节数据 char *p1=(char *)&a;//将aint型指针强制转化为char类型指针 printf("a=%#x\n",*p1++);//0x78

72320

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

: ①在初始化常量引用时允许用任意表达式作为初始值,只要该表达式结果能转成引用类型即可(见下面代码段1) ②允许为一个常量引用绑定非常量对象、字面值、甚至是个一般表达式(见下面代码段2) //代码段...也可以用const来修饰指针,指向常量指针不能用于改变其所指对象常量只能由常量指针来指向,不能由非常量指针来指向 const double pi = 3.14; double *ptr = &...指向常量指针)。...指向可以改,但是不能通过该指针改变所指向值 这种类型const也被称为“底层const”:表示指针所指向值是个常量 指针常量:(指针常量)。...pa = 1; //不能通过常量指针修改所指对象指针常量,因为指针是个常量,而不是类型是常量,因此有下面的规则: 只能指向于非常量,不能指向于常量(因为放置指针常量修改常量

1.3K10

C++ 指针常量常量指针

而不管是指针常量还是常量指针他们区别其实就是const关键字位置,下面直接根据声明方式不同解释二者区别: 在只有一个关键字const情况下,声明有三种方式: //1 const int* p...,举个例子: int a = 5; const int* p = &a; a = 4;//合法 *p = 3;//不合法 由于这个特点,通常把const int* p形式作为函数参量,以表示函数不会用这个指针修改数据...,比如我们有一个子函数是想打印一个数组,那么我们可以将函数声明写成这样: void printfarr(const int *arr,int n); 如此,当主函数中调用该子函数,并打印主函数变量array.../合法 p = &b;//不合法 以上就是所谓指针常量常量指针所包含概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类和第二类到底哪个叫做指针常量,那个叫做常量指针呢?...说实话我都不知道指针常量常量指针叫法是不是够官方,我只能说概念非常混淆,而且其实它两个名字并不重要,关键是声明方式与作用区别。

1.6K70

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

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

65710

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

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

59520

常量表达式函数

大家好,又见面了,我是你们朋友全栈君。 我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数,但并非所有的函数都有资格成为常量表达式函数。...事实上,常量表达式函数要求非常严格,总结如下: 函数体只有单一return返回语句。 函数必须返回值,不能是void函数。 在使用前必须已有定义。...return返回语句表达式中不能使用非常量表达式函数、全局数据,且必须是常量表达式。...而nConstValue要求使用GetConstThree值,但此值还没有进行编译时计算,所以有问题。 4.return返回语句表达式中不能使用非常量表达式函数、全局数据,且必须是常量表达式。...那么其return表达式语句就不能包含运行时才能确定变量或函数,只有这样,编译器才能在编译时进行常量表达式函数额值计算。

39510

指针(二) - (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; // 不能通过指针修改指向内容(必须初始化变量) // 不能改变指针指向(必须初始化指针

39830

c++常量常量表达式

cout << c << endl;//值为90 //指针和const int iv(10); int iv1(23); const int * pci1(&iv);//指向常量指针,限定了该指针操作...,pci1值可以改变,pcil指向值不能变 pci1 = &iv1; iv = 30; int * const pci2(&iv);//常量指针,把指针本身定位常量,pci2值不能改变,pci2指向值可以改变...字面值和constexpr 常量表达式:字面值是常量表达式,用常量表达式初始化const对象也是常量表达式 const int ci = 20;//ci是常量表达式 const int cii = ci...+ 90;//cii是常量表达式 int iv = 30;//iv不是常量表达式 声明为constexpr变量一定是常量,而且必须用常量表达式初始化 constexpr int cif = 23;...constexpr声明指针,只对指针有效,与指针指向对象无关 constexpr int cvi(12);//必须定义到函数体外部才能被cip使用 constexpr const int * cip

55720

常量表达式是什么_const常量

通常情况下,常量表达式值必须被一个常量表达式赋值,而跟常量表达式函数一样,常量表达式值在使用前必须被初始化。 一、常量表达式 1.1 运行时常量性与编译时常量性 在C++中,我们常常会遇到常量概念。...不过编译后我们发现,无论将GetConst结果用于需要初始化数组Arr声明中,还是用于匿名枚举中,或用于switch-casecase表达式中,编译器都会报告错误。...不过并非所有的函数都有资格成为常量表达式函数。事实上,常量表达式函数要求非常严格,总结起来,大概有以下几点: ·函数体只有单一return返回语句。...当然,其原因也很明显,因为无法获得常量常量表达式是不被认可。 第三点约束是常量表达式函数在使用前必须被定义。对于普通函数而言,调用函数只需要有函数声明就够了,但常量表达式函数使用则有所不同。...当然,作为一个常量表达式函数,return表达式需要是一个常量表达式也是天经地义事情。

73010

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

出现在 * 左边时, 指针指向数据为常量, 指向数据不可改变; 右指 ( 指针常量 ) : const 出现在 * 右边时, 指针地址本身是常量, 指针地址不可改变; 指针常量 : 表示该指针本身是一个常量...; 常量指针 : 表示指向一个常量指针 ; IV ....常引用 ---- 常引用 : ① 常引用简介 : 引用本身是一个常量指针 , 指针本身地址不可改变 , 常引用 在常量指针基础上 , 将指向数据也设置成常量 , 即不能通过该引用修改变量值 ;...; 这里注意 , 不同通过引用进行修改 , 但是可以通过变量名称 a 进行修改 ; ⑤ 作用及意义 : 使用 引用数据类型 作为 函数参数 , 如果不需要在 函数中 修改该引用变量值 ( 指针指向数据值...语言中 , 如果要让函数参数可以将结果返回 , 则必须使用指针作为参数 ; C++ 中引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数情况 ,

1.2K10

c++ 常量表达式_c++符号常量

大家好,又见面了,我是你们朋友全栈君。 常量表达式主要是允许一些计算发生在编译时,即发生在代码编译阶段而不是代码运行阶段。...函数中只能有一条return语句 函数必须有返回值 在使用前必须定义 return返回语句表达式中不能使用非常量表达式函数、全局数据。...只能是一个常量表达式 //函数中只能有一条return语句,在linux下编译失败,在vs2017上编译通过 constexpr int getconst() { constexpr int i =...static_assert(1, "fail"); return 100; } int a = 3; constexpr int data3() { return a;// return返回语句表达式中不能使用非常量表达式函数...func();// 无法通过编译,在使用前必须已经有定义 system("pause"); return 0; } 常量表达式构造函数有以下限制 函数体必须为空 初始化列表只能由常量表达式来赋值 struct

28350

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

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

23400
领券