我发现strcpy函数只是将一个字符串复制到花药。例如,如果程序包括以下语句:
char buffer[10];
----------
strcpy(buffer, "Dante");字符串"Dante“将放置在数组buffer[]中。该字符串将包含终止null(\0),这意味着总共将复制6个字符。我只是想知道为什么我们不能简单地说?:
buffer = "Dante";如果我没有弄错的话,C处理字符串更像数组,而不是BASIC。
发布于 2011-05-27 03:47:15
因为字符串不是C中的数据类型。“String”是char*的,所以当您试图分配它们时,您只是将内存地址而不是字符复制到缓冲区中。
考虑到这一点:
char* buffer;
buffer = malloc(20);
buffer = "Dante";它为什么要神奇地把“但丁”放进缓冲器?
发布于 2011-05-27 03:46:15
因为C中的“数组”是内存块。没有可指定的指针。
如果你问为什么语法不是这样的:如果长度不同会发生什么?
发布于 2011-05-27 04:03:20
数组的地址不可更改。在的其他意义上,你可以考虑,
char buffer[20];是编译时等效于,
char* const buffer = (char*)malloc(20);现在,由于不能更改buffer地址,所以不能执行以下操作:
buffer = "Dante"; // error 'buffer' address is not modifiablehttps://stackoverflow.com/questions/6147627
复制相似问题