如何正确调用函数中的指针,并改变它,在线等。
例如
void* memcopy(void* pvto,const void* pvfrom,size_t size)
{
assert((pvto!=NULL)&&(pvfrom!=NULL));
byte* pbto=(byte*)pvto;
byte* pbfrom=(byte*)pvfrom;
while(size--> 0)
*pbto++ = *pbfrom++;
cout < <pbto < <endl;
return pvto;
}
int _tmain(int argc, _TCHAR* argv[])
{
char p[]= "abcdefg ";
const int len=strlen(p);
char* q;
memcopy(q,p,len);
return 0;
}
--------------
定义char *q 想在函数中改变它,但定义成char* p 就变成CONST了吧?不能改变其值,想问下如何定义指针,并改变他的内容?在线等
[解决办法]
int _tmain(int argc, _TCHAR* argv[])
{
char p[]= "abcdefg ";
const int len=strlen(p);
//char* q;//这里的p没有指向合法内存.好比给你一把钥匙,却没告诉你去开哪里的门
char* q= (char*)malloc(sizeof(char)*(len+1));
memcopy(q,p,len);
return 0;
}
[解决办法]
void* memcopy(void* pvto,const void* pvfrom,size_t size)
{
//assert((pvto!=NULL)&&(pvfrom!=NULL));
byte* pbto=(byte*)pvto;
byte* pbfrom=(byte*)pvfrom;
while(size--> 0)
*pbto++ = *pbfrom++;
return pvto;
}
int main(int argc, char* argv[])
{
char p[]= "abcdefg ";
const int len=strlen(p);
char* q=new char[len+1];
memset(q,0,len+1);
memcopy(q,p,len);
cout < <q < <endl;
return 0;
}