比较 strcpy() 的两个实现

标签 c arrays pointers

<分区>

我有这两个函数做同样的事情(strcpy() 函数):

第一次实现:

void strcpy(char* des_str, const char* src_str) 
{ 
   int j = 0; 
   while ((dest_str[j] = src_str[j])!= '\0')) 
   j++; 
}

第二次实现:

void strcpy(char* des_str, const char* src_str) 
{ 
   while ((*dest_str = *src_str)!= '\0')) 
   { 
      src_str++;
      dest_str++; 
   } 
} 

C 程序员通常喜欢哪种风格/实现? “数组” 方法还是“指针” 方法?这两种实现之间是否存在“审美”差异以外的差异?

最佳答案

我敢打赌,两者生成的机器代码完全相同。 (经过优化)

因此,这只是一个可读性问题:使用您和您的团队最熟悉的版本。这里最重要的是,当任何程序员看到此源代码时,他/她不必浪费时间思考此函数的作用。

关于比较 strcpy() 的两个实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586892/

相关文章:

c - 对非常大的数字进行算术运算的算法

c - 指向 3D 数组数据切片的 2D 指针数组

java - 如何将字符串数组从 C++ 返回到 Java (JNI)

c - Linux驱动编写,file_operations incompatible pointer type错误

更改函数中的字符串

C语言 : Getting Segmentation fault on Declaring an array

javascript - 如何在表单提交时添加嵌套对象?

c - 阵列扫描两次?

c - C 语言中 free() 函数的使用?

C++ - char* 与 string*