#include <stdio.h>
#include <string.h>
struct Info
{
char *name;
char kind[14];
int age;
};
main()
{
Info a, b;
a.name = "Kim";
strcpy(a.kind, "Middle");
a.age = 16;
b = a;
*b.name = 'C'; // 문자열 포인터는 포인터이므로 참조하는 구조체 전체 값이 변경됨
b.age += 10;
printf("%s %s %d\n", a.name, a.kind, a.age);
}
안녕하세요. 궁금증연구소 입니다.
오늘 포스팅 주제는 "[C언어] 구조체의 문자열포인터는 변경시 참조하는 모든 값이 변경됨" 입니다.
위와 같은 코드에서, b 구조체의 name 값 변경은 a구조체에도 영향을 준다.
왜냐하면, name 구조체가 문자열 포인터이기 때문이다.
반면, b구조체의 값에 10을 더해주어도 a구조체에는 당연히 영향이 없다. 각각 다른 구조체에 값이 저장되기 때문이다.
또한 *b.name 에서 연산자 우선순위는 .> * 이므로 위 코드의 의미는 b.name(포인터)의 첫번째 글자값을 뜻한다.
C언어 sizeof(자료형) 간단정리 (0) | 2022.08.10 |
---|---|
c언어 버퍼비우기 (%*c) (0) | 2022.08.06 |
[C언어] 문자열포인터와 문자열의 차이점 (0) | 2022.07.27 |
[리눅스] 500 Illegal port command Error 발생시 대처법(ftp) (0) | 2022.07.23 |
[c언어] strcat 사용시 주의할점 (0) | 2022.07.19 |