반응형

C 135

왜 이중 간접을 사용하는가?아니면 왜 포인터에 포인터를 사용하는가?

왜 이중 간접을 사용하는가?아니면 왜 포인터에 포인터를 사용하는가? C에서 이중 간접을 사용해야 하는 경우는 언제입니까?예를 들어 설명할 수 있는 사람이 있나요? 내가 아는 건 이중 간접은 포인터에 대한 포인터라는 거야포인터에 대한 포인터가 왜 필요합니까?를 는 문(어느 정도)를 사용하면 .char *word (어느 정도)로 하다, 어(어느 정도)로 하다, 어(어느 정도?char **sentence '어(어)로 하다'를 사용하시면 됩니다.char ***monologue 는, 「(을 할 수 .char ****biography 도서관 사용하실 수 .char *****biolibrary 이 한 경우 할 수 .char ******lol ... ... 네, 이것이 최적의 데이터 구조가 아닐 수도 있다는 것을 알고..

programing 2022.08.03

언제 왜 malloc을 사용합니까?

언제 왜 malloc을 사용합니까? 언제, 왜안 돼요.malloc. 제 코드는 다음과 같습니다. #include int main(int argc, const char *argv[]) { typedef struct { char *name; char *sex; int age; } student; //Now I can do two things student p; //or student *ptr = (student *)malloc(sizeof(student)); return 0; } 「메모리 할당」을 사용할 수, 이유는 입니까?student p;malloc이치하다앞에서 설명한 바와 같이 동적 할당은 실행 시 메모리를 할당하는 것을 의미합니다.예를 들어 컴파일 시간 동안 메모리 양을 모르는 경우 등입니다. 한 가..

programing 2022.08.01

인라인 함수를 호출할 때 정의되지 않은 참조

인라인 함수를 호출할 때 정의되지 않은 참조 인라인 함수의 GCC 4.8.1에서 이상한 에러가 발생하고 있습니다. 헤더 파일에 정의되어 있는2개의 거의 동일한 인라인함수가 있습니다(debug.h그리고.error.h)의 경우src/include/다만, 인쇄하는 것만이 다릅니다.- 1개의 프리픽스DEBUG:메시지, 그리고 다른 쪽과%s: error: %s(프로그램명, 에러 메시지).함수를 인라인으로 정의하고 디버깅빌드를 컴파일하는 경우(따라서 매크로를 설정합니다).DEBUG=1정의되지 않은 참조 오류가 많이 발생합니다. src/main_debug.o gcc -osrc/main_debug.o src/main.c -c -Wall -Wextra -Wpedantic -std=gnu11 -march=native -O..

programing 2022.08.01

C에서 inline 키워드는 어떤 용도로 사용됩니까?

C에서 inline 키워드는 어떤 용도로 사용됩니까? stackoverflow에서 다음과 같은 질문을 몇 개 읽었습니다.inlineC에 있지만 아직 명확하지 않다. static inline void f(void) {}와 실질적으로 차이가 없다static void f(void) {}. inline void f(void) {}C++ 방식으로는 동작하지 않습니다.C에서는 어떻게 동작합니까? 실제 기능extern inline void f(void);할 수 있을까? 난 실제로 그 용도를 찾지 못했다.inlineC프로그램의 키워드, 그리고 다른 사람의 코드에서 이 키워드를 보면 거의 항상static inline다른 점이라고는 생각하기에static.C 코드는, 다음의 2개의 방법으로 최적화할 수 있습니다.코드 크기 ..

programing 2022.07.31

프로그램이 32비트 또는 64비트라는 것은 무엇을 의미합니까?

프로그램이 32비트 또는 64비트라는 것은 무엇을 의미합니까? 마감되었습니다. 이 질문은 충족되지 않습니다.스택 오버플로우 가이드라인현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?스택 오버플로의 토픽이 되도록 질문을 업데이트합니다. 2년 전에 문을 닫았어요 이 질문을 개선하다 이 질문:WORD는 32/64비트 OS에 각각 몇 개의 비트를 포함하고 있습니까?는 워드 사이즈는 프로세서 레지스터의 비트 크기를 의미합니다.이것은 컴퓨터 프로세서가 동작하는 비트 수, 즉 프로세서가 동작하는 최소의 '분할할할 수 없는' 비트 수를 의미합니다. 그것이 맞습니까?Word/Excel 등의 소프트웨어를 사용하여 32비트 또는 64비트 설치 옵션을 사용할 수 있습니다.뭐가 다른데? 컴퓨터 아키텍처는 고정되어 ..

programing 2022.07.31

Waitpid는 타임아웃과 동등합니까?

Waitpid는 타임아웃과 동등합니까? 몇 가지 하위 프로세스를 시작하는 프로세스가 있다고 상상해 보십시오.부모는 아이가 언제 나가는지 알아야 한다. 사용할 수 있습니다.waitpid, 해야 할 경우 종료해야 할 를 알 수 waitpid우아하게 퇴장하고 합류할 수 있도록 하겠습니다.스스로 정리하는 것은 좋지만, 그렇게 큰 일은 아닐지도 모릅니다. 사용할 수 있습니다.waitpidWNOHANG비지 대기 시간을 방지하기 위해 임의의 시간 동안 sleep합니다.하지만 아이가 자주 나갔는지 아닌지 알 수 밖에 없어요.제 경우엔 아이가 언제 나올지 아는 게 그렇게 중요한 건 아닐지 몰라도 최대한 빨리 알고 싶어요 를 「」에 할 수 .SIGCHLD시그널 핸들러에서는 아이가 퇴장할 때 내가 하려던 모든 작업을 수행하..

programing 2022.07.31

초기화되지 않은 로컬 변수가 가장 빠른 난수 생성기입니까?

초기화되지 않은 로컬 변수가 가장 빠른 난수 생성기입니까? 초기화되지 않은 로컬 변수가 정의되지 않은 동작(UB)이라는 것을 알고 있습니다.또, 그 값은 트랩 표현을 가지고 있을 가능성이 있기 때문에, 향후의 조작에 영향을 주는 경우가 있습니다만, 때때로 랜덤 번호를 시각적인 표현에만 사용하고 싶기 때문에, 예를 들면, 프로그램의 다른 부분에서는 랜덤한 색으로 시각적인 효과를 설정하는 등, 그 외의 부분에서는 사용하지 않습니다.예를 들어 다음과 같습니다. void updateEffect(){ for(int i=0;i

programing 2022.07.31

컴파일 시 엔디안성 판별

컴파일 시 엔디안성 판별 이 질문에는 이미 답변이 있습니다. 빅 엔디안 또는 리틀 엔디안 머신을 결정하기 위한 매크로 정의 (22개 답변) 닫힘2년 전에요. 커뮤니티는 4개월 전에 이 질문을 재개할지 여부를 검토한 후 종료했습니다. 원래 종료 이유가 해결되지 않았습니다. 프로그램을 컴파일하고 있는 플랫폼의 엔디안을 (컴파일 시간 중에) 안전하게 확인할 수 있는 휴대용 방법이 있습니까?C로 쓰고 있어요. [편집] 답변 감사합니다.런타임 솔루션을 계속 사용하기로 했습니다!컴파일 타임 체크에 관한 최초의 질문에 답하기 위해서, 기존의 C, C++, 및 POSIX 규격 중 endianness를 검출하기 위한 매크로를 정의하는 것은 없기 때문에, 기존의 모든 컴파일러와 미래의 모든 컴파일러에서 동작하는 표준화된 ..

programing 2022.07.30

C의 기능에 전달되는 어레이와 어레이 포인터의 차이

C의 기능에 전달되는 어레이와 어레이 포인터의 차이 C의 두 기능의 차이점은 무엇입니까? void f1(double a[]) { //... } void f2(double *a) { //... } 상당히 긴 어레이에서 함수를 호출하면 이 두 함수는 다르게 동작하며 스택에서 더 많은 공간을 차지합니까?먼저 몇 가지 표준어가 있습니다. 6.7.5.3 기능 선언기(시제품 포함) ... 7 ''배열''로서의 파라미터 선언형식'은 "유자격 포인터"로 조정해야 한다.type'', 여기서 유형 수식자(있는 경우)는 다음 중 지정된 수식자입니다. [그리고. ]배열 유형 파생 모델입니다.키워드가 static에도 표시됩니다. [그리고. ]배열 유형 도출의 경우, 함수에 대한 각 호출에 대해 대응하는 실제 인수 값은 크기 식..

programing 2022.07.30

연산자 우선 순위와 평가 순서

연산자 우선 순위와 평가 순서 'operator precedence'와 '평가 순서'라는 용어는 프로그래밍에서 매우 일반적으로 사용되는 용어이며 프로그래머가 알아야 할 매우 중요한 용어입니다.그리고 제가 알기론 두 가지 개념이 밀접하게 얽혀있기 때문에 표현을 말할 때 하나가 없으면 안 되는 거죠. 간단한 예를 들어 보겠습니다. int a=1; // Line 1 a = a++ + ++a; // Line 2 printf("%d",a); // Line 3 자, 분명한 것은Line 2C 및 C++의 시퀀스 포인트는 다음과 같기 때문에 정의되지 않은 동작으로 이어집니다. &(논리 AND), ||(논리 OR) 및 쉼표 연산자의 왼쪽 피연산자와 오른쪽 피연산자의 평가 사이.예를 들어, 식에서*p++ != 0 && *..

programing 2022.07.30
반응형