
这个C++程序(只有短短4行)无法执行,为什么?
//Pointer.cpp:Definestheentrypointfortheconsoleapplication.//指针实验#include"stdafx.h"us...
// 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.
这个程序是钱能C++那本书书上面的例子程序。 展开
// 指针实验
#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.
这个程序是钱能C++那本书书上面的例子程序。 展开
5个回答
展开全部
楼上的诸位可能没有搞清楚char *pc = "asdf";的涵义是什么吧?
请注意:char *pc = "asdf";这句代码是正确的!看下面的分析。
char *pc = "asdf";定义了一个字符指针,然后把指向字符串常量“asdf”的指针赋给pc;通过pc对它所指向的字符数组的任何改变都会造成程序的错误,因为它所指的字符数组是const字符数组,通过str对它所指向的字符数组的任何改变都是未定义的!
为了避免以上的错误,我们可以把str定义为const字符指针,
即 const char *pc = "asdf";
这样就指明不允许通过str改变它所指字符数组。
* pc = 'b'; //此行无法正确执行
这里肯定会出错阿,原因就是上面的分析。
#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;
}
源程序改为这样就可以了。
请注意:char *pc = "asdf";这句代码是正确的!看下面的分析。
char *pc = "asdf";定义了一个字符指针,然后把指向字符串常量“asdf”的指针赋给pc;通过pc对它所指向的字符数组的任何改变都会造成程序的错误,因为它所指的字符数组是const字符数组,通过str对它所指向的字符数组的任何改变都是未定义的!
为了避免以上的错误,我们可以把str定义为const字符指针,
即 const char *pc = "asdf";
这样就指明不允许通过str改变它所指字符数组。
* pc = 'b'; //此行无法正确执行
这里肯定会出错阿,原因就是上面的分析。
#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;
}
源程序改为这样就可以了。
展开全部
*p是指针变量,对应的必须是地址 、
你把'b'改成 &b 或者b就好啦
你把'b'改成 &b 或者b就好啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的你在说天书么?
这个错误是因为"asdf"是栈中的const char [],内容不能被修改。
把char * pc = "asdf" ;
改成
char * pc = new char[5] ;然后用strcpy来初始化,后面的语句就可以正常运行了
这个错误是因为"asdf"是栈中的const char [],内容不能被修改。
把char * pc = "asdf" ;
改成
char * pc = new char[5] ;然后用strcpy来初始化,后面的语句就可以正常运行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你* pc = 'b'; 这句打算修改常字符串了,常字符串是不能修改的
你可改动为
char str[]="asdf";
char *pc=str;
这样就可以修改*p了
你可改动为
char str[]="asdf";
char *pc=str;
这样就可以修改*p了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接把*pc = 'b';,改成pc[0] = 'b';就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询