积极答复者
这两行程序为什么无法执行:char * pc = "asdf" ; * pc = 'b';

问题
-
// Pointer.cpp : Defines the entry point for the console application. // 指针实验 #include "stdafx.h" using namespace std; int main(int argc, char* argv[]) { char * pc = "asdf" ; * pc = 'b'; //此行无法正确执行 * (pc+1) = 'c'; cout << pc <<endl; system("pause"); return 0; }
开发环境:VC++6.0 sp6
错误提示:First-chance exception in Pointer.exe: 0xC0000005: Access Violation.
答案
-
-
char * const pc = "asdf" ; //指针名前加const定义指针常量
pc = "dfgh"; //error:指针常量不能改变其指针值
* pc = 'b'; //ok: pc内容为“bsdf”
* (pc+1) = 'c'; // ok: pc内容为“bcdf”pc = "dfgh"; 的操作并不是要修改字符串"asdf",而是要修改指针pc的值。
*const 把pc定义为常量指针,即指针pc是一个const常量,因此不能将"dfgh"的地址赋给pc。
- 已标记为答案 hooluupog 2010年4月21日 0:52
全部回复
-
-
char * const pc = "asdf" ; //指针名前加const定义指针常量
pc = "dfgh"; //error:指针常量不能改变其指针值
* pc = 'b'; //ok: pc内容为“bsdf”
* (pc+1) = 'c'; // ok: pc内容为“bcdf”pc = "dfgh"; 的操作并不是要修改字符串"asdf",而是要修改指针pc的值。
*const 把pc定义为常量指针,即指针pc是一个const常量,因此不能将"dfgh"的地址赋给pc。
- 已标记为答案 hooluupog 2010年4月21日 0:52