목록데이터구조 (199)
스택큐힙리스트
내 프로젝트는 두 개의 소스 파일로 이루어져 있습니다: a.cpp: const int n = 8; b.cpp: extern const int n; int main() { // error LNK2001: unresolved external symbol int const n (?n@@3HB) int m = n; } 나는 이것을 작동시키기 위한 몇 가지 방법들이 있는 것을 알고 있습니다; 그러나, 왜 작동하지 않는지 궁금합니다?답변 1이것은 const 가 기본적으로 내부 연결을 의미하는 것 이기 때문입니다. 그래서 정의는 번역 단위 외부에서는 보이지 않습니다. 이 경우, by far the best solution은 헤더 파일에 선언 (extern int const n;)을 넣고, 그것을 a.cpp 및 b.c..
저는 로컬로 선언된 extern 및 레지스터 변수에 대해 궁금해 해왔습니다. 가능하다면 어떤 제한이 부과될까요?답변 1int i; void f() { extern int i; } 는 다음과 같습니다: int i; void f() { extern int i; } 왜냐하면 이전에 선언된 int i는 접속성을 지정하지 않았기 때문에 링크가 없다고 명시되어 있기 때문입니다: 다음 식별자는 접속성이 없습니다: 객체나 함수 이외의 것으로 선언된 식별자; 함수 매개변수로 선언된 식별자; 저장 클래스 지정자 extern이 없이 선언된 블록 범위 객체의 식별자. 이전 선언은 내부 또는 외부 링크를 지정합니다 extern int i; void f() { extern int i; } 는 다음과 같습니다: extern int..
static 키워드는 전역 변수의 범위가 해당 번역 단위로 제한되도록 유지합니다. .h 파일에서 static int x를 사용하고 모든 다른 파일에서 해당 .h 파일을 포함하면 모든 파일이 동일한 번역 단위에 속하게 되지 않을까요? 그러면 x는 어디에서나 볼 수 없을까요? 그래서 현재 static의 역할은 무엇인가요? 또한, x가 전역 변수인 경우 static const int x를 사용하는 것에 대한 사용이 있나요? 모든 const 전역 변수는 기본적으로 static이 아닙니까? 그리고 const 변수의 범위는 파일의 for 루프에 제한되어 있더라도 TU에 제한되지 않습니까?답변 1만약 당신이 static const int x 를 .h 파일에 작성한다면, 이 .h 파일을 #include하는 모든 번역 ..
#include #include traverse.h void main() { // 입력 NODE p; printf(\n트리를 입력하십시오.); input_tree (&p); printf(\n\n트리가 순회 중입니다...\n); traverse_print(&p); } void input_tree (NODE *p) { int in; int c; NODE *temp; printf(\n p를 위한 키 값을 입력하십시오: ); scanf(%d, &in); p->key =in; printf (\n\n값이 %d인 노드에 관련하여,in); printf (왼쪽 자식이 있습니까? (Y/N): ); if ((c = getchar()) == Y); { // 새로운 메모리를 할당합니다. temp = (NODE *)malloc(..