为了账号安全,请及时绑定邮箱和手机立即绑定

关于strcpy函数的问题?

关于strcpy函数的问题?

Yii
陪伴而非守候 2019-02-14 15:11:18
如上图片,我在网上提了几个问题了解了strcpy函数,明明参数类型都是char类型的指针,为什么程序中的第一个参数是数组,第二个参数是字符串?我看了书上的解释,书上这个函数的原型是strcpy(string1,string2),而且strcpy(mystring, "hello")这样写是正确的。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

strcpy是将字符串的每个字符,写入到字符数组里。
楼主要仔细研究下字符数组和字符串指针的区别,数组不等同与指针。

你可以做个试验,看编译器执行哪个会报错,就更能知道字符串指针和字符数组的区别了。
用字符数组:
char szMyName[20] = {0};
strcpy(szMyName, "123");
用字符串指针:
char* pMyName = "345";
strcpy(pMyName, "123");

查看完整回答
反对 回复 2019-03-20
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

szMyName 和 "werd!#¥%" 没有区别 字符串作为参数传进去的就是字符串的首地址,就是这个指针本来就是只指向第一个字母,计算机会自动往后找直到找到 '\0'才会认为是字符串结束

szName数组名也是一个字符类型的指针,如果是空的那么第一个就是'\0' 两个都是char*类型
当然作为参数是直接拷贝到函数里面去执行所以没有区别,但是“!@#4”这样的是常量,你是不能改的

查看完整回答
反对 回复 2019-03-20
?
潇湘沐

TA贡献1816条经验 获得超6个赞

char szMyName[20];改成char* szMyName;
函数原型char *strcpy(char* dest, const char *src);

查看完整回答
反对 回复 2019-03-20
  • 3 回答
  • 0 关注
  • 755 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信