避免不了的问题,就是把const指针赋值给普通指针, 这个函数原型的参数为const变量, 却要求返回一个普通指针变量类型*//*如果有更好的解决方法,请大神赐教*/char*find_char(charconst*source,charconst*chars) {char*p;if(source != NULL && chars !=NULL){for(;*source !='\0';source++){for(p = chars...
用const修饰变量 p 时,则 p 成为只读变量,必须在定义的同时初始化,不能在其他地方被重新赋值。 即这个变量就只能作为右值(赋值给别人),不能成为左值(接收别人的赋值)。 const int p 与 int const p 是等价的。 2、const int *p 当把const放最前面的时候,它修饰的就是 *p,*p 表示的是指针变量 p 所指向...
int* p = NULL; // 将 常量 a 的地址赋值给指针 // 在 堆内存中重新 分配一个 4 字节的空间 // 将 常量 a 的值 10 存储进去 p = (int *)&a; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 在所有的编程语言中 , 常量 都具有如下特点 : 定义时分配内存 , 运行期间保持不变 ; const ...
//const int *p = &a; //表示 *p 值不能发生改变否则 error: assignment of read-only location '* p' //*p = 30; //这么写就是错的 return 0; } /* 输出: a = 20 a = 30 */ 2.intconst*p const和int可以互换位置,所以intconstp 和 *const**int*p 二者是等价的; 3.int*constp 此时con...
1、防止修改指针指向的内容 void StringCopy(char*strDestination,const char*strSource);其中 strSource 是输入参数,strDestination 是输出参数。给 strSource 加上 const 修饰后,如果函数体内的语句试图改动 strSource 的内容,编译器将指出错误。2、防止修改指针指向的地址 void swap ( int* const p1 , int* ...
一句话总结,常量指针,允许被赋值,但是不能更改数据! 常量数据赋值给普通指针的问题 然而常量指针可以指向常量或者非常量数据,只是不能修改。但是常量的数据是不能被指针所指向的,比如下面这个例子 1constinttest =5;//test 是 int 类型的常量数据 2intp = test;//这是不被...
从没有const的一端做右值赋值给有const的一端。 先看下面代码: 1:char** pointera; 2:constchar** pointerb; 3:char*const* pointerc;//这个指针可以用pointera来初始化; 4:char**constpointer;//这个指针可以用pointera来初始化; 根据编译器的提示,可以作如下的理解: ...
这段程序的各种赋值其实完全符合第2部分中介绍的原则。在传参和赋值的过程中需要注意: 指针内容被const修饰时,*p不可修改 指针内容被const修饰时,不能赋值给内容非const的指针 指针变量和内容都被const修饰时,只能给相同情况的指针赋值 说起来有些拗口,仔细想想其实和第二部分所讲的内容相似。 OK,今天就先到这里。
在我个人的理解中,可以将指针理解成int整型,只不过它存放的数据是内存地址,而不是普通数据,我们通过这个地址值进行数据的访问,假设它的是p,意思就是该数据存放位置为内存的第p个字节。 当然,我们不能像对int类型的数据那样进行各种加减乘除...
在这里解释一下上述代码:第二行代码,使用了const(expression),显示转换,这是由于c++比c类型转换更严格。所以需要将 const int * 转换为 int * 才能够进行赋值,并且第二行代码将被隐式转换为如下代码: int temp=a; int *ptr=&temp; //所以对指针 ptr 指向的内存空间进行操作,并不会影响到 a。