+ -
当前位置:首页 → 问答吧 → 请教C++高手解惑!!!

请教C++高手解惑!!!

时间:2011-12-14

来源:互联网

char *pChar = (char*)pszSrc;中(char*)是什么意思?去掉括号为什么有错??请问他是转换成char型的指针类型吗?如果去掉括号是什么意思呢?


// StringCopy.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"


void CopyString(const char* pszSrc, char* pszDes)
{
char *pChar = (char*)pszSrc;
char *pDes = pszDes;
while(*pChar != ' ')
{
*pDes = *pChar;
pDes ++;
pChar++;
}
}

int main(int argc, char* argv[])
{
char szDes[128] = {0};
CopyString("VC编程词典!", szDes);
cout << szDes << endl;

return 0;
}

作者: kamfun   发布时间: 2011-12-14

强制类型转换,把const去掉,C的方式。C++的方式是const_cast:

char *pChar = const_cast<char*>(pszSrc);

就这段代码来说完全没必要转换去掉const,因为pszSrc是数据源,应该是不希望改变它的,所有操作它的地方用const char*即可。

作者: tonywearme   发布时间: 2011-12-14

char *pChar = (char*)pszSrc;


const char * 类型的pszSrc 不能转换成 char* 类型的pChar;所以要强制转换。

实际上,应该这样做:

const char* pChar = pszSrc;

作者: mingliang1212   发布时间: 2011-12-14

void CopyString(const char* pszSrc, char* pszDes)
{
char *pChar = (char*)pszSrc;

pszSrc是const char*类型, 表示这个指针所指的内容在函数里面不能被修改。
而pChar是char*转型后就消除了const,那么也就可以改这个指针所指的内容了,
如果在这个函数里面你没有用pChar更改其内容,那么没什么问题,
如果用pChar改了其内容则与这个函数的声明不符,虽然运行可能没什么问题, 但是有隐患

作者: tujiaw   发布时间: 2011-12-14