#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';'을 의미합니다. –