const int *p 和int * const p 的区别

看例子:

int sloth = 3;

const int *p1 = &sloth;

int * p2 const = &sloth;

这样申明的话,不允许使用p1来修改sloth的值,但是p1可以指向其他的地址;

可以利用p2修改sloth的值,但是p2不允许指向其他地址。

第二个例子:

1、

int gorp = 16;

int chips = 12;

const int *p_snack = &gorp

*p_snack = 20;  (X)

p_snack = &chips;  (√)

注: *p_snack是const而p_snack不是const。

2、

int gorp = 16;

int chips = 12;

int * const p_snack = &gorp;

*p_snack = 20;  (√)

p_snack  = &chips;  (X)

注: p_snack是const而*p_snack不是const。

3、

int gorp = 16;

int chips = 12;

const int * const p_snack = &gorp;

*p_snack = 20;  (X)

p_snack  = &chips;  (X)

注: p_snack和*p_snack都是const。

const int *p 和int * const p 的区别

时间: 2024-10-12 05:35:22

const int *p 和int * const p 的区别的相关文章

const int *a和int *const a的区别

关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在那里1.const int *a 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象 eg:        const int *a = 0;        const int b = 1;        int c = 1;       a = &b  //  额外:注意不能通过a 来修改 b值       a = &a

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别

 加有const关键字的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = # 1.       可以读自己 2.       可以通过*p改自己 3.       可以通过p = &data来看别人 权限最大 cons int *p = # 1.const放在左边意味着指向的是常量,这个常量不可以修改, 2.p = &data; (地址可以修改) 3.*p = 30;(这个时候是错误的) 这两者等价(应用:查看别人的账户) i

C++ char*,const char*,string,int 的相互转换

C++ char*,const char*,string,int 的相互转换 1. string转const char* string s ="abc";const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s ="abc";string s(c_s); 3. string转char* string s ="abc";char* c;constint len

喜闻乐见的const int *p、int* const p、const int* const p

不废话直接代码示例: 1 void f(const int *p) { 2 3 int b = 10; 4 5 *p = 10; // error 6 7 p = &b; // fine 8 9 } 10 11 void f(int* const p) { 12 13 int b = 10; 14 15 *p = 10; // fine 16 17 p = &b; // error 18 19 } 20 21 void f(const int* const p) { 22 23 int b

int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [3]”转换为“size_t”

2014-03-02 20:14 在编译下列代码时,出现以下错误: cpp(23) : error C2664: “int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [3]”转换为“size_t” 请问这是什么意思?该怎么修改? #include<iostream> #include<string> #include<stdio.h> using namespace std; str

x86_64 xercexc: error: cast from &#39;const void*&#39; to &#39;long int&#39; loses precision [-fpermissive]

mingw编译x86_64版本xerces-c-2.8.0: 修改src/xercesc/util/HashPtr.cpp: unsigned int HashPtr::getHashVal(const void *const key, unsigned int mod , MemoryManager* const) { return ((long long)key % (unsigned long)mod); } 修改src/xercesc/internal/XSerializeEngine.

【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

[转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 下面依次对这三种类型进行介绍. 因为*操作符是左操作符,左操作符的优先级是从右到左,对于

C++中 int i 与 int &amp;i 注意事项

来源:http://blog.csdn.net/qianchenglenger/article/details/16949689 1.int i 传值,int & i 传引用 int i不会回带参数,而int &i可以回带参数,如 [cpp] view plain copy #include <iostream> void test1(int i) { i = 7; } void test2(int &i) //要限制参数改动,可以加const限制 { i = 7; }

C++中类const、static、static const成员变量

#include<iostream> using namespace std; class Test { private: const int a;  //const 成员变量只能在构造函数的成员初始化列表中初始化,不能在函数体中和其他地方 static int b; //static 成员变量需要在全局范围内初始化,格式: 类型名 类名::变量名 = 值 static const int c;//static const 成员变量需要在全局范围内初始化,格式:类型名 类名::变量名 = 值