assign 연산자는 variable 에 값을 assign 할 뿐만 아니라 값을 return 한다.
assing 연산자가 return한느 값은 바로 assign 한 값이다. (Rvalue, Right-Hand Side Value)
따라서 문자열 복사 ( string copy ) 함수를 C언어에서 다음처럼 구현할 수 있음.
#include <stdio.h>
void str_copy(char* s, char*d){
while((*d++=*s++)!=0);
}
void main(void)
{
char a[5];
char b[5] = "ABCD";
str_copy(a, b);
printf("%s\n%s\n", a, b);
}
1) str_copy 함수는 source 문자열과 destination 문자열의 시작 주소를 s랑 d라는 포인터로 받음
2) *d++ = *s++ 의 의미는
i) *d = *s 로 포인터가 가리키는 곳의 값을 assign 한 다음
ii) d와 s 포인터를 증가 (d++, s++)
3) *d = *s 에서, 포인터 s가 가리키는 주소의 값 *s 가 null 이었다면 while 문 조건이 거짓이 되어
loop를 빠져 나온다.
따라서 위 코드는 문자열 s를 d로 null 까지 복사함.
'Programming > Algorithm' 카테고리의 다른 글
[C언어/파이썬] Insertion Sort Algorithm C와 Python으로 구현해보기 (0) | 2022.04.17 |
---|---|
[문제해결 알고리즘] BFS :: 연습문제 :: 미로탈출 로봇 대회(정올) :: C언어 (0) | 2022.01.31 |
[문제해결 알고리즘] BFS :: 너비우선탐색의 개념 (0) | 2022.01.31 |
두 수의 최대 공약수를 구하는 알고리즘 - 유클리드 호제법의 파이썬 구현과 수학적 증명 (0) | 2020.10.01 |
[코딩 알고리즘/Prime Number] 에라토스테네스의 체(Eratosthenes' Sieve) : 소수(Prime Number)를 구하는 알고리즘 (0) | 2020.08.23 |