C 113

"int *nums = {5, 2, 1, 4}"이(가) 분할 장애를 일으킵니다.

"int *nums = {5, 2, 1, 4}"이(가) 분할 장애를 일으킵니다. int *nums = {5, 2, 1, 4}; printf("%d\n", nums[0]); seg fault를 발생시키는 반면, int nums[] = {5, 2, 1, 4}; printf("%d\n", nums[0]); Doesn't.지금: int *nums = {5, 2, 1, 4}; printf("%d\n", nums); 인쇄 5 이를 바탕으로 어레이 초기화 표기법 {}이(가) 이 데이터를 왼쪽 변수에 맹목적으로 로드하는 것으로 추측했습니다.int [ ] 의 경우 어레이는 원하는 대로 채워집니다.int*일 경우 포인터는 5로 채워지고 포인터가 저장되는 메모리 위치는 2, 1, 4로 채워집니다.따라서 nums [ 0 ]는..

programing 2022.08.16

구조 내에서 구성원을 초기화할 수 없는 이유는 무엇입니까?

구조 내에서 구성원을 초기화할 수 없는 이유는 무엇입니까? 구조 내에서 구성원을 초기화할 수 없는 이유는 무엇입니까? 예: struct s { int i = 10; }; C++ 11 에서는, 다음의 선언이 허가되고 있는 것에 주의해 주세요. struct s { int i = 10; }; 이것은 오래된 질문이지만, 구글에서 상위권에 랭크되어 있기 때문에, 명확해지는 것이 좋을지도 모른다.직접적인 답변은 구조 정의가 초기화할 수 있는 변수가 아닌 유형을 선언하기 때문입니다.예를 들어 다음과 같습니다. struct s { int i=10; }; 이것은 변수를 선언하지 않고 유형을 정의합니다.변수를 선언하려면 다음 사이에 이름을 추가합니다.}및 그;그 후 초기화합니다. struct s { int i; } t =..

programing 2022.08.16

null 끝 문자열의 근거는 무엇입니까?

null 끝 문자열의 근거는 무엇입니까? 나는 C와 C++를 좋아하지만 Null 종단 문자열 선택에 머리를 긁적거리지 않을 수 없다. 길이 접두사(예: Pascal) 문자열이 C 이전에 존재했습니다. 길이 프리픽스 문자열은 일정한 시간 길이의 검색을 가능하게 하여 여러 알고리즘을 고속화합니다. 프리픽스 문자열의 길이를 지정하면 버퍼 오버런 에러가 발생하기 어려워집니다. 32비트 머신에서도 문자열이 사용 가능한 메모리의 사이즈로 되어 있는 경우, 길이 프리픽스 문자열은 늘 종단 문자열보다 3바이트밖에 넓지 않습니다.16비트 머신에서는 이것은 1바이트입니다.64비트 머신에서는 4GB가 적당한 문자열 길이 제한이지만 보통 64비트 머신에는 충분한 메모리가 있기 때문에 추가 7바이트는 null 인수입니다.원래 ..

programing 2022.08.16

포인터를 사용하여 다른 함수에서 로컬 변수에 액세스하는 방법

포인터를 사용하여 다른 함수에서 로컬 변수에 액세스하는 방법 다른 기능의 로컬 변수에 액세스할 수 있습니까?만약 그렇다면, 어떻게? void replaceNumberAndPrint(int array[3]) { printf("%i\n", array[1]); printf("%i\n", array[1]); } int * getArray() { int myArray[3] = {4, 65, 23}; return myArray; } int main() { replaceNumberAndPrint(getArray()); } 위의 코드 출력: 65 4202656 내가 뭘 잘못하고 있지?"4202656"은 무슨 뜻입니까? 전체를 ?replaceNumberAndPrint()음보보다다다다다?????????myArray이 「」..

programing 2022.08.16

C코드('외부 C' 필요)가 C++로 컴파일 되어 있는지 여부를 검출하는 방법

C코드('외부 C' 필요)가 C++로 컴파일 되어 있는지 여부를 검출하는 방법 C++ 라이브러리의 일부로서 C 헤더가 있습니다. 이 C 헤더는 C 컴파일러 또는 C++ 컴파일러에 의해 컴파일된 경우에만 의미가 있습니다.extern "C" { ... }그렇지 않으면 해결되지 않은 링크에러가 발생합니다. 다음과 같은 블록을 추가하려고 합니다. #ifdef __cplusplus #error "Compiling C bindings with C++ (forgot 'extern \"C\"'?)" #endif C 헤더에 포함되어 있습니다만, 유감스럽게도__cplusplus매크로가 정의되어 있습니다.extern "C" { ... }차단합니다. 이 상태를 올바르게 검출할 수 있는 다른 방법이 있습니까?일반적인 방법은 클..

programing 2022.08.15

상수 0.0039215689는 무엇을 의미합니까?

상수 0.0039215689는 무엇을 의미합니까? 다양한 그래픽 헤더 파일에서 이 연속적인 팝업을 볼 수 있습니다. 0.0039215689 색깔과 관련이 있는 것 같은데? 다음은 구글의 첫 번째 히트작입니다. void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f; Gfx.FogColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f; } void RDP_G_SETBLENDCOLOR(void) { Gfx.B..

programing 2022.08.15

최소 2배 값(C/C++)

최소 2배 값(C/C++) C(++) 프로그램에서 가장 작은 음수 값(예를 들어 음수 무한대 사용)을 나타내는 표준 및/또는 휴대용 방법이 있습니까? float.h의 DBL_MIN은 최소 양수입니다.-DBL_MAX float.h에 정의되어 있는 ANSI C의 경우.C에서 다음을 사용합니다. #include const double lowest_double = -DBL_MAX; C++pre-11에서는 #include const double lowest_double = -std::numeric_limits::max(); C++11 이후에는 #include constexpr double lowest_double = std::numeric_limits::lowest(); IEE IEEE 754)을 수 있는 DBL..

programing 2022.08.15

C에 레퍼런스가 있나요?

C에 레퍼런스가 있나요? C에 참조가 있습니까?즉, C++와 같이: void foo(int &i) 아뇨, 그렇지 않아요.포인트는 있지만, 완전히 같은 것은 아닙니다. 특히 C의 모든 인수는 C++와 같이 pass-by-reference를 사용할 수 있는 것이 아니라 값에 의해 전달됩니다.물론 포인터를 통해 참조별로 시뮬레이션을 할 수 있습니다. void foo(int *x) { *x = 10; } ... int y = 0; foo(&y); // Pass the pointer by value // The value of y is now 10 포인터와 참조의 차이에 대한 자세한 내용은 다음 SO 질문을 참조하십시오(그리고 저는 C나 C++ 프로그래머가 아니기 때문에 묻지 마십시오).포인터가 다른 오브젝트를 ..

programing 2022.08.14

Mac OS X의 clock_gettime 대체 기능

Mac OS X의 clock_gettime 대체 기능 MacPorts를 통해 필요한 라이브러리를 설치한 후 Mac OS X에 작성한 프로그램을 컴파일할 때 다음 오류가 발생합니다. In function 'nanotime': error: 'CLOCK_REALTIME' undeclared (first use in this function) error: (Each undeclared identifier is reported only once error: for each function it appears in.) 인 것 같다clock_gettime는 Mac OS X에서는 구현되지 않습니다.에폭 시간을 나노초 단위로 취득할 수 있는 대체 수단이 있습니까?불행하게도gettimeofday단위는 마이크로초입니다.몇 ..

programing 2022.08.14

const는 C/C++에서 어떤 최적화를 제공합니까?

const는 C/C++에서 어떤 최적화를 제공합니까? 가독성을 위해 참조 또는 포인터로 파라미터를 전달할 때는 가능하면 const 키워드를 사용해야 한다는 것을 알고 있습니다.인수가 일정하다고 지정하면 컴파일러가 할 수 있는 최적화가 있습니까? 몇 가지 경우가 있을 수 있습니다. 함수 파라미터: 상시 참조: void foo(const SomeClass& obj) 상수 SomeClass 개체: void foo(const SomeClass* pObj) 또한 SomeClass에 대한 지속적인 포인터: void foo(SomeClass* const pObj) 변수 선언: const int i = 1234 함수 선언: const char* foo() 각 컴파일러가 제공하는 최적화 기능(있는 경우)은 무엇입니까?원..

programing 2022.08.14