char* my_strcpy(char* dest, const char* str) { while (dest != '\0') { *dest = *str; dest++; str++; } return dest; } int main() { char* (*pf)(char*, const char*) = my_strcpy; char* (*pfArr[4])(char*, const char*) = { my_strcpy,my_strcpy,my_strcpy,my_strcpy }; printf("%s ", pfArr[1]("abcdef","wlzero")); return 0; }
时间: 2024-02-03 12:03:59 浏览: 119
c代码-C: []数组、*指针、&引用(别名) const char* str;等同于char const* str; char* const str;
这段代码有几个问题:
1. 在 my_strcpy 函数中,dest != '\0' 应该改为 *dest != '\0',因为 dest 是一个指针,要判断指针指向的值是否为 '\0'。
2. my_strcpy 函数没有复制字符串的结束符 '\0',应该在 while 循环结束后再将 '\0' 复制到 dest 中。
3. 在 main 函数中,pfArr 数组中存储的都是 my_strcpy 函数的地址,没有必要存储 4 个相同的函数地址。
下面是修改后的代码:
```
#include <stdio.h>
char* my_strcpy(char* dest, const char* str) {
while (*str != '\0') {
*dest = *str;
dest++;
str++;
}
*dest = '\0';
return dest;
}
int main() {
char* (*pf)(char*, const char*) = my_strcpy;
printf("%s ", pf("abcdef", "wlzero"));
return 0;
}
```
输出结果为:`wlzero`。
阅读全文