strcpy()函数的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/20 15:31:55
strcpy(a,b)函数,把b复制给a,是否a必须是一个地址,不可以是常量?
所以strcpy("def",str2); strcpy("def","DEF");都是错误的?

a必需是一个地址, 也就是内存指针.

strcpy("def",str2)这样话, 不知道往哪里拷贝

a必须为一个地址,
并且是必须指向栈区,不能使常量区

所以strcpy("def",str2); strcpy("def","DEF");都是错误的

参考strcpy函数的原型,语句strcpy("def",str2); strcpy("def","DEF");连编译都通不过。

分类上升达人 希声和寡 的回答是片面的,因为如果使用了网络内存映射(我这里说的是SMP结构,对称多处理机),strcpy可以在网络之间内存中拷贝,这时候就没有栈区和常量区的概念了。

知道2008年度盘点 幸巴达 所说的“strcpy("def",str2)这样话, 不知道往哪里拷贝”是错误的,因为"def"也代表了一个地址,即使是不合法的地址。例如,"def"[2]的写法是正确的,它表示的是字符'f'。

68088905 说,“不是相当于3 = 5 把5赋给3 你说行不”,这是不能这么类比的,因为非const类型的指针是lvalue,而你说的3和5都是rvalue,这样的举例显然不恰当。并且,"def"这类的常量字符串有的编译器会认为是lvalue,当然,有的编译器认为是rvalue.

TO “回答者:匿名 1-7 10:28”:VC6是c99、c++标准出来之前的编译器,是个很古老的编译器,很多地方已经不符合标准,不要拿不符合标准的东西来证明新生事物是错误的。

回答问题讲究全面,切莫只听一家之言。

不是相当于3 = 5 把5赋给3 你说行不

最讨厌“雨落深山”这样的,
肚子里没有多少货,
自己写什么都写不出来,
就知道等别人写之后,四处搜出一些也不知道对不对得漏洞来。

人家问简单的字符串拷贝,