#include<stdio.h>
char* my_strcpy(char* source, char* destination) {
char* p = destination;
while(*source != '\0') {
*p++ = *source++;
}
*p = '\0';
return destination;
}
int main() {
char stringa[40] = "Time and tide wait for none";
char stringb[40];
char *ptr;
char *ptr1;
ptr = stringa;
ptr1 = stringb;
puts(stringa);
puts(ptr);
my_strcpy(ptr, ptr1);
puts(ptr);
return 0;
}
這裏變量destination
作爲函數的本地副本返回指針是安全的。我相信只要地址在返回後立即被使用就是安全的,否則如果其他進程使用該地址,它將被改變。 如何安全返回而不做return destination
?更好的方法來返回函數的值
是否有可能爲p
做一個malloc並返回它而不是指定destination
指向的位置?
出於好奇你是在練習數組複製和使用指針?執行'strcpy(destination,source)是不是更容易?無論如何也不需要返回指針:) – Nobilis
「在大多數操作系統中,如果某個其他進程使用該地址,地址空間是虛擬化的,因此您不必擔心這個問題 – SirDarius
Didn'你的意思是'* p ='\ 0';'而不是'p ='\ 0';' –