반응형

C 66

주어진 코드의 복잡도 결정

주어진 코드의 복잡도 결정 코드 조각이 주어지면 일반적으로 복잡성을 어떻게 결정할 것입니까?저는 빅 오 질문에 매우 혼란스러워 하고 있습니다.예를 들어, 아주 간단한 질문이 있습니다. for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.println("*"); } } TA는 이것을 조합과 같은 것으로 설명했습니다.이와 같이 n은 2 = (n(n-1))/2 = n^2 + 0.5를 선택한 후 상수를 제거하여 n^2가 됩니다.테스트 값을 입력하고 시도해 볼 수 있는데 이 조합은 어떻게 들어오는 건가요? 만약 if 진술이 있다면요?복잡성은 어떻게 결정됩니까? for (int i = 0; i < n; i++) { if (i % 2 ==0)..

programing 2023.10.18

프리오픈 후 출력을 다시 화면으로 리디렉션하는 방법("out.txt", "a", stdout)

프리오픈 후 출력을 다시 화면으로 리디렉션하는 방법("out.txt", "a", stdout) #include int main() { printf("This goes to screen\n"); freopen("out.txt", "a", stdout); printf("This goes to out.txt"); freopen("/dev/stdout", "a", stdout); printf("This should go to screen too, but doesn't\n"); return 0; } freopen에 전화해서 stdout을 밖으로 재연결합니다.txt 그런 다음 파일에 무언가를 인쇄하면 화면으로 다시 리디렉션하려고 하는데 freopen("/dev/stdout", "a", stdout); 작동하지 않습..

programing 2023.10.13

"시스템 호출 차단"이란 무엇을 의미합니까?

"시스템 호출 차단"이란 무엇을 의미합니까? "시스템 호출 차단"의 의미는 무엇입니까? 운영체제 강좌에서는 멀티 스레드 프로그래밍을 공부하고 있습니다.교과서에서 "스레드가 차단 시스템 호출을 할 때 다른 스레드가 실행되도록 허용할 수 있습니다."라고 읽었을 때 무슨 의미인지 잘 모르겠습니다.차단 시스템 호출은 작업이 완료될 때까지 기다려야 합니다.read()좋은 예가 될 것입니다. 입력이 준비되지 않은 경우, 입력이 완료될 때까지 대기합니다(물론 이 경우에는 차단 시스템 호출이 되지 않을 수도 있지만, blocking 이외로 설정하지 않은 경우).분명히 한 스레드가 차단 시스템 호출 중에 대기하는 동안 다른 스레드가 다른 작업을 수행하는 중에 꺼질 수 있습니다.차단 시스템 호출의 경우 호출자는 시스템 호..

programing 2023.10.13

"inline" 키워드 vs "인라이닝" 개념

"inline" 키워드 vs "인라이닝" 개념 저는 기록을 바로 세우기 위해 이 기본적인 질문을 하는 것입니다.이 질문과 현재 수락된 답변을 참조했는데, 설득력이 없습니다.그러나 두 번째로 많이 투표된 답변은 더 나은 통찰력을 제공하지만, 완벽하지도 않습니다. .inline 키워드와 "인라이닝" 컨셉. 제 의견은 이렇습니다. '인라이닝(inlineing)' 개념 이것은 함수의 호출 오버헤드를 저장하기 위해 행해집니다.매크로 스타일의 코드 교체와 더 유사합니다.논쟁할 것 없습니다. inline 지각 A inline키워드(keyword)는 컴파일러가 이를 최적화하고 더 빠른 호출을 할 수 있도록 더 작은 기능에 주로 사용되는 컴파일러에게 요청하는 것입니다.컴파일러는 그것을 무시할 자유가 있습니다. 아래의 이..

programing 2023.10.13

fstream의 peek에 해당하는 C

fstream의 peek에 해당하는 C 저는 C++에서 다음 캐릭터를 엿볼 수 있다는 것을 알고 있습니다.in.peek();. C에서 파일의 다음 문자를 "삐끗"하려고 할 때 어떻게 해야 합니까?fgetc+ungetc.아마 이런 거겠지. int fpeek(FILE *stream) { int c; c = fgetc(stream); ungetc(c, stream); return c; } 당신은 a를 사용할 수 있습니다.getc뒤를 이어직접 실행해야 합니다.fread를 사용하여 다음 문자를 읽고 fseek를 사용하여 읽기 전의 위치로 돌아갑니다. 편집: int fsneaky(FILE *stream, int8_t *pBuff, int sz) { sz = fread(pBuff, 1, sz, stream) fsee..

programing 2023.10.08

PTHREAD_MUTEX_ADAPTIVE_NP란 무엇입니까?

PTHREAD_MUTEX_ADAPTIVE_NP란 무엇입니까? "적응형" pthread 음소거에 대한 설명서는 어디서 찾을 수 있습니까?PTHREAD_MUTEX_ADAPTIVE_NP 기호는 시스템에 정의되어 있지만 온라인에서 찾을 수 있는 유일한 설명서에는 적응형 뮤텍스가 무엇인지 또는 언제 사용하는 것이 적절한지에 대한 설명이 없습니다. 그럼... 뭐죠? 그리고 언제 사용해야 하죠? 참고로 제 libc 버전은 다음과 같습니다. GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10.5) stable release version 2.15, by Roland McGrath et al. Copyright (C) 2012 Free Software Foundation, Inc. This i..

programing 2023.10.08

C - 오류: 'a'의 저장 크기를 알 수 없습니다.

C - 오류: 'a'의 저장 크기를 알 수 없습니다. 이건 내 C 프로그램인데... #include struct xyx { int x; int y; char c; char str[20]; int arr[2]; }; int main(void) { struct xyz a; a.x = 100; printf("%d\n", a.x); return 0; } 이것이 제가 받는 오류입니다. 계속하려면 ENTER 또는 type 명령을 누릅니다. 13strument test.c: 기능 '메인'에서:13 struct 테스트.c:13:13: 오류: 'a'의 저장 크기를 알 수 없습니다.13 struct test.c:13:13:경고: 미사용 변수 'a' [-미사용-변수]당신의 구조는 다음과 같습니다.struct xyx그렇지만a..

programing 2023.10.08

함수 포인터를 반환하는 함수에 대한 C 구문

함수 포인터를 반환하는 함수에 대한 C 구문 다음과 같은 유형의 결함을 고려합니다. typedef int (*f1)(float); typedef f1 (*f2)(double); typedef f2 (*f3)(int); f2는 함수 포인터를 반환하는 함수입니다.입니다.f3 , , f3환, isf2할 수 ?f3유형의 결함 없이?다를 이 더 는 것을 알고 .f3C더 잘 하지만 여기서 나의 의도는 C 구문을 더 잘 이해하는 것입니다.합니다 합니다.f1: int (*f1)(float); 너는 원한다f2.f1 대신에, ㅇf1에서 에.f2: int (* f1 )(float); | +-----+-----+ | | v v int (*(*f2)(double))(float); 선언문에는 다음과 같이 적혀 있습니다. f2 -..

programing 2023.10.03

CMake를 사용하여 .dll 생성

CMake를 사용하여 .dll 생성 윈도우 XP에 다음과 같은 C 파일이 있습니다. optBladWriter.coptWriteNlpEmpsFile.c 이 코드에 대한 DLL을 생성하고 싶습니다.add_library 명령어를 사용했습니다. 내 make file은 다음과 같습니다. CMAKE_MINIMUM_REQUIRED ( VERSION 2.6) add_library (optFmg optBladWriter.c optWriteNlpEmpsFile.c) 명령 프롬프트 Project를 사용하여 CMake를 실행한 후.sln이 생성됩니다.비주얼 스튜디오로 수입해서 제작했습니다.optFmg.lib 파일을 받았습니다.하지만 optFg.dll 파일을 원합니다. 위의 경우 cmake를 이용하여 dll 파일을 생성하는 것..

programing 2023.10.03

스레드 오류 탐지를 위해 Helgrind 또는 DRD를 사용해야 합니까?

스레드 오류 탐지를 위해 Helgrind 또는 DRD를 사용해야 합니까? Valgrind에는 스레드 오류 탐지를 수행하는 두 가지 도구가 있는 것 같습니다.헬그린드와 DRD.이 도구들은 상당히 유사합니다. 제 주된 질문은 다음과 같습니다. 멀티 스레드 코드를 확인하기 위해 다른 것 대신 하나를 언제 사용해야 합니까? 좀 더 넓게 보면, 왜 두 가지 도구가 존재합니까?저는 그들이 완전히 불필요한 것은 아니라고 생각합니다.중요한 차이점은 무엇입니까?일반적으로 두 도구를 통해 코드를 실행할 계획을 세워야 합니까?Helgrind는 잠금 순서 위반을 감지할 수 있지만 대부분의 프로그램에서 DRD는 분석을 수행하는 데 필요한 메모리가 적습니다.또한 DRD는 분리된 스레드를 지원합니다.미묘한 차이도 더 많습니다. 더..

programing 2023.09.28
반응형