大家好
原函数:
send(char* a,char* b,char* c,char* d)
{
打印a-d,d值不正确,d的值和b是一样的;
}
int main(int argc,char*argv[])
{
char bf[4][20];
for(i=0;i<argc,i++)
{
bf[i]=argv[i];
}
打印bf[1-4],值正确;
send(bf[1],bf[2],bf[3],bf[4]);
}
这种情况下,bf[4]的值进入send函数后出现了错误,并不是预定的值而是和bf[2]一样。监测情况传参之前是正确的,传参后错误。命令行传入的字符串没有越界,最多就是“1010“。
调试后,如果改变send函数的入参类型,改为
send(string a,string b,string c,string d)
{
打印a-d,正确无误;
使用c_str()转换后数值也无误;
}
请问这是怎么回事呢?我百思不得其解,谢谢! |