반응형

C 36

C 질문: (공백 *) vs (공백 *)

C 질문: (공백 *) vs (공백 *) 다른 점이 뭐죠?const void *그리고.void *? 어떤 상황에서 포인터가 A에 캐스팅되는 것을 피할 수 있습니까?const void포인터?A const void *수정해서는 안 되는 메모리를 가리킵니다. A void *(non-const) 수정할 수 있는 메모리를 가리킵니다(그러나 를 통해서는 아님).void *; 먼저 캐스팅을 해주셔야 할 것 같습니다. 사용할때memmove(), 소스 주소는 다음으로 캐스트됩니다.const void *: void *memmove(void *dst, const void *src, size_t nbytes); 이는 빈 공간 포인터를 일정한 빈 공간 포인터로 캐스트할 수 있는 예입니다.기본적으로 포인터가 가리키는 메모리를 수..

programing 2023.09.16

ctype을 사용하여 python 문자열 개체를 char*로 변환

ctype을 사용하여 python 문자열 개체를 char*로 변환 C타입을 이용하여 파이썬(3.2)에서 C로 2개의 문자열을 보내려고 합니다.이것은 제 라즈베리 파이 프로젝트의 작은 부분입니다.C 함수가 문자열을 제대로 받았는지 테스트하기 위해 텍스트 파일에 문자열 중 하나를 배치합니다. 파이썬 코드 string1 = "my string 1" string2 = "my string 2" # create byte objects from the strings b_string1 = string1.encode('utf-8') b_string2 = string2.encode('utf-8') # send strings to c function my_c_function(ctypes.create_string_buffer..

programing 2023.09.16

C와 C++의 Float와 Double의 크기는 어떻게 됩니까?

C와 C++의 Float와 Double의 크기는 어떻게 됩니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. 고정 크기 부동 소수점 유형 (5개 답변) 닫힘9년 전에. 혹시 와 비슷한 표준형이 있는지 알아보고 있었습니다.uint32_t항상 32비트 부호 없는 적분 타입으로 매핑되지만 찾을 수 없었습니다. 크기는?float모든 플랫폼에서 항상 4바이트? 크기는?double항상 8? 그 문제에 대해 어떤 기준이 있습니까? 모든 플랫폼(x86 및 x64)에서 내 크기가 항상 동일한지 확인하고 싶어서 표준 int 유형을 사용하고 있지만 유사한 유형의 디프를 찾을 수 없습니다.float그리고.double.C99 표준에서 발췌한 표준 부속서 F(C++ 표준은 이 부속서에 대해 명시적으로 언급하지는 않지만 참조별..

programing 2023.09.11

구조 객체가 없는 C 포인터 산술

구조 객체가 없는 C 포인터 산술 C에서는 불가능할 것 같은데 확인 부탁드립니다.이 유형의 실수 변수 없이 구조 부재 간의 연산이 가능합니까?예를 들어, typedef struct _s1 { int a; int b; int c; } T1; 구조 시작 대비 c 부재의 오프셋을 보고 싶습니다.변수가 있으면 쉽습니다. T1 str; int dist = (int)&str.c - (int)&str; 하지만 제 구조가 너무 커서 RAM에 멤버가 없습니다(EPROM에서만). 그리고 주소 계산을 좀 하고 싶은데 RAM 멤버를 정의하지 않고 RAM 멤버를 정의하지 않습니다.구조 변수 대신 구조 포인터로 작업할 수 있지만(4바이트만 소요됨), 저는 흥미로운 케이스입니다.오프셋을 사용하면 해당 유형의 변수를 잡을 필요 없이..

programing 2023.09.11

-fno-stack-protector의 용도는 무엇입니까?

-fno-stack-protector의 용도는 무엇입니까? 저는 C에서 신청서를 작성했고, 무엇이 목적인지 이해하려고 노력하고 있습니다.-fno-stack-protector컴파일할 때 명령을 입력합니다.특정 응용 프로그램의 경우 버퍼 오버플로로부터 보호하는 측면에서 이 명령을 사용하든 사용하지 않든 아무런 차이가 없습니다. 인터넷에서 읽었어요.-fstack-protector그리고.-fno-stack-protector명령어는 스택 스매싱 보호기를 각각 활성화하고 비활성화하지만, 내가 직접 응용 프로그램을 컴파일하는 경우 보호기를 사전에 활성화하려면 어떻게 해야 합니까?명령어의 사용은 응용 프로그램이 실행 중인 시스템에 따라 달라질 수 있습니까?표준/재고 GCC에서는 스택 프로텍터가 기본적으로 해제되어 있습..

programing 2023.09.01

전체 텍스트 파일을 C의 문자 배열로 읽는 중

전체 텍스트 파일을 C의 문자 배열로 읽는 중 텍스트 파일의 내용을 C의 문자 배열로 읽고 싶습니다.새 라인을 유지해야 합니다. 어떻게 해야 하나요?저는 웹에서 C++ 솔루션을 찾았지만, C만 있는 솔루션은 없습니다. 편집: 현재 다음 코드가 있습니다. void *loadfile(char *file, int *size) { FILE *fp; long lSize; char *buffer; fp = fopen ( file , "rb" ); if( !fp ) perror(file),exit(1); fseek( fp , 0L , SEEK_END); lSize = ftell( fp ); rewind( fp ); /* allocate memory for entire content */ buffer = calloc(..

programing 2023.07.28

'for' 루프 이니셜라이저에서 포인터를 역참조하면 분할 오류가 생성됩니다.

'for' 루프 이니셜라이저에서 포인터를 역참조하면 분할 오류가 생성됩니다. 의 포인터를 사용하는 데 문제가 있습니다.for루프. 내 안에서.for루프 이니셜라이저, 참조 취소int포인터를 지정하고 값을 '0'으로 지정합니다.루프에서 참조되지 않은 포인터를 사용하면 분할 오류가 발생하는데, 그 이유를 이해할 수 없습니다.사용 중인 코드::블록과 CGNU GCC 컴파일러. 시계 창문을 보면, 나는 그것을 볼 수 있습니다.for루프 변수에 난수가 있습니다. 참조되지 않은 포인터가 다음 작업 중에 범위를 잃는 것 같습니다.for고리. 코드: #include int main(void) { int val = 0; int *p = NULL; int answer = 0; p = &val; *p = 1; // This..

programing 2023.07.13

배열이 정의되지 않았거나 초기 크기가 없음을 선언하려면 어떻게 해야 합니까?

배열이 정의되지 않았거나 초기 크기가 없음을 선언하려면 어떻게 해야 합니까? 다음을 사용하여 수행할 수 있다는 것을 알고 있습니다.malloc하지만 아직 사용법을 모릅니다. 예를 들어, 나는 사용자가 스톱을 넣기 위해 Sentinel과 함께 무한 루프를 사용하여 여러 개의 숫자를 입력하기를 원했지만(예: -1), 나는 아직 그/그녀가 몇 개를 입력할지 모르기 때문에 초기 크기가 없는 배열을 선언해야 합니다.하지만 이 인트라[]처럼 작동하지 않는다는 것도 알고 있습니다. 컴파일할 때는 정해진 수의 요소가 있어야 하기 때문입니다. intar[1000]와 같이 과장된 크기로 선언하면 효과가 있겠지만, 멍청하게 느껴집니다(그리고 1000 정수 바이트를 메모리에 할당하기 때문에 메모리가 낭비됩니다). 이를 수행하..

programing 2023.07.03

이 ">>=" 연산자는 C에서 무엇을 의미합니까?

이 ">>=" 연산자는 C에서 무엇을 의미합니까? unsigned long set; /*set is after modified*/ set >>= 1; 커널 시스템 호출에서 이걸 찾았는데 이해가 안 되는데, 어떻게 작동하나요?그 표현은set >>= 1;수단set = set >> 1;그것은 오른쪽 시프트 비트입니다.set타고1(자체 할당 형식:>>Bitwise 오른쪽 Shift 연산자를 선택합니다. 만약에set다음과 같습니다. BIT NUMBER 31 n=27 m=17 0 ▼ ▼ ▼ ▼ set = 0000 1111 1111 1110 0000 0000 0000 0000 그다음에set >> = 1;변수set다음이 됩니다. BIT NUMBER 31 n=26 m=16 0 ▼ ▼ ▼ ▼ set = 0000 0111 ..

programing 2023.07.03

블록 안에 있는 ";"는 무엇을 의미합니까?

블록 안에 있는 ";"는 무엇을 의미합니까? 이 질문에는 이미 다음과 같은 답이 있습니다. C/C++에서 빈 식을 사용할 수 있는 이유는 무엇입니까? (11개 답변) C에서 null 문 사용 (13개 답변) 마감됨6년 전에. 누가 이걸 왜 쓰겠어요? if(a==1){;} 문이 없고 세미콜론이 하나만 있고 오류가 발생하지 않습니다.이 세미콜론은 어떤 용도로 사용됩니까?빈말입니다.단일 세미콜론은 자체적으로 작업을 수행하지 않습니다. 이 맥락에서, 그것은 만약에if조건이 참입니다. 아무것도 하지 마십시오. 없이else섹션, 이 코드는 별로 사용되지 않습니다.만약 있다면, 조건이 뒤집혀 비어 있지 않은 것만 포함해야 하는지 여부는 스타일의 문제입니다.if부분. 이 경우 단순한 조건부이므로 스타일적으로 뒤집는 것..

programing 2023.06.28
반응형