typedef struct DATA{
char person1[100];
char person2[100];
char person3[100];
char person4[100];
}DATA;
typedef struct NODE{
struct NODE* next;
struct NODE* up;
DATA data;
}NODE;
이렇게 되어있을때
저 person들을 NULL로 지정하려면 어떻게 해야 할까요?
대충 NODE* p1;
strcpy((*p1).data.person1,NULL);
이렇게 했더니 segmentation fault 떠버리고
그렇다고 (*p1).data.person1=NULL;
이렇게 하면 컴파일할때 바로 오류가 나버리는데
어떤 방법을 써야지 저걸 NULL로 만들수가 있나요??
보통 배열=NULL 이렇게 하면 되지 않나요?
*p1->data.person1 = 0;
->
person 이 stack 변수라서 따로 초기화 안해줘도 되지 않나요? 제가 쓰는 컴파일러는 자동으로 0으로 초기화됩니다
수동으로 초기화하려면 memset(data.person1, 0x0, sizeof(char)*100); 이런식으로 하면 되겠습니다
p1은 구조체포인터이고, data 는 stack 변수이고, person1 은 stack char array 이니 포인터연산 주의하세요
알못새끼가 존나 시끄럽게 떠드네
일단 연결 리스트니까 p1->data.person1은 동적 할당된 메모리 공간에 존재할 가능성이 크고
동적 할당됐든 자동 변수든 간에 0으로 초기화된다는 보장은 없지
그리고 char 배열을 빈 문자열로 초기화하는 건 O(1)에 할 수 있는 일인데 왜 O(n)으로 늘려서 하냐?
굳이 표준 라이브러리 함수가 쓰고 싶으면 strcpy(p1->data.person1, "") 하든지 memset을 쓸 이유는 없지
아 물론 memset(p1->data.person1, 0, 1) 이렇게 쓰면 memset 써도 된다 (웃음)
tdm-gcc 에선 stack char arry 선언하면 0으로 초기화 됩니다만...
char array 초기화 하는건 ZeroMemory로 하던, bzero로 하던, memset으로 하던, = {0,} 으로 하던 전혀 상관없는데요. 개발자 생활 6년동안 그거가지고 뭐라고 하는소리 처음 듣네요.
항상 느끼는건데 현업새끼들 대부분이 빡대가리인것같다 그런 주제에 좋은 처우를 바라지
본인쨩 학부3학년생이고 2001년부터 프로그래밍 공부했는데 왼발 넷째발가락으로만 코딩해도 너보다 잘하는것