首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Turbo C strcpy库函数

Turbo C strcpy库函数
EN

Stack Overflow用户
提问于 2011-05-27 03:43:26
回答 6查看 2.9K关注 0票数 0

我发现strcpy函数只是将一个字符串复制到花药。例如,如果程序包括以下语句:

代码语言:javascript
复制
char buffer[10];
----------
strcpy(buffer, "Dante");

字符串"Dante“将放置在数组buffer[]中。该字符串将包含终止null(\0),这意味着总共将复制6个字符。我只是想知道为什么我们不能简单地说?

代码语言:javascript
复制
buffer = "Dante";

如果我没有弄错的话,C处理字符串更像数组,而不是BASIC。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-27 03:47:15

因为字符串不是C中的数据类型。“String”是char*的,所以当您试图分配它们时,您只是将内存地址而不是字符复制到缓冲区中。

考虑到这一点:

代码语言:javascript
复制
char* buffer;

buffer = malloc(20);
buffer = "Dante";

它为什么要神奇地把“但丁”放进缓冲器?

票数 9
EN

Stack Overflow用户

发布于 2011-05-27 03:46:15

因为C中的“数组”是内存块。没有可指定的指针。

如果你问为什么语法不是这样的:如果长度不同会发生什么?

票数 3
EN

Stack Overflow用户

发布于 2011-05-27 04:03:20

数组的地址不可更改。在的其他意义上,你可以考虑

代码语言:javascript
复制
char buffer[20];

编译时等效于,

代码语言:javascript
复制
char* const buffer = (char*)malloc(20);

现在,由于不能更改buffer地址,所以不能执行以下操作:

代码语言:javascript
复制
buffer = "Dante"; // error 'buffer' address is not modifiable
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6147627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档