«pointers» 태그된 질문

메모리에 저장된 다른 값을 "가리키는"데이터 유형. 포인터 변수는 다른 엔티티 (변수 또는 함수 또는 다른 엔티티)의 메모리 주소를 포함합니다. 이 태그는 참조가 아닌 포인터 사용과 관련된 질문에 사용해야합니다. 포인터를 사용하는 가장 일반적인 프로그래밍 언어는 C, C ++, Go 및 어셈블리 언어입니다. 특정 언어 태그를 사용하십시오. 다른 유용한 태그로는 포인터 사용을 설명하는 메소드, 함수, 구조체 등이 있습니다.

7
C ++ 참조로 배열 전달
참조로 배열을 전달할 수 있습니까? void foo(double& *bar) 내 컴파일러가 아니오라고 말하는 것 같습니다. 왜? 참조로 배열을 전달하는 올바른 방법은 무엇입니까? 아니면 해결 방법? 내 메서드가 수정해야하고 나중에 검색해야하는 배열 인수가 있습니다. 또는이 배열을 잘 작동하는 클래스 멤버로 만들 수 있지만 코드의 다른 부분에는 많은 단점이 있습니다 (피하고 싶습니다). 감사합니다.

7
NULL 값을 0으로 대체 할 수 있습니까?
? NULL값의 대체물로 포인터 를 사용할 수 0있습니까? 아니면 그 일에 잘못된 것이 있습니까? 예를 들어, int i = NULL; 대체품 : int i = 0; 실험으로 다음 코드를 컴파일했습니다. #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } 산출: 0 실제로 그것은 나에게 완전히 정확한 …

4
무엇을 하는가? ((void (*) ()) buf) (); 평균?
picoCTF에서 이진 악용 문제를 해결하고 다음 코드를 보았습니다. ((void (*)())buf)(); buf문자 배열은 어디에 있습니까 ? 나는 도전을 해결했지만 정확히 무엇을하고 있는지 이해할 수없는 것 같습니다. 나는 보았다 이 스레드 그러나 나는 그것을 만들 수 없습니다. 무슨 ((void (*)())buf)();뜻입니까?

6
왜 이것이 역 참조 타입 천공 포인터 경고 컴파일러에 해당한다고 주장합니까?
Stack Overflow RE 에 대한 다양한 게시물 을 읽었습니다 : derefercing type-punned pointer error. 내 이해는 오류가 본질적으로 다른 유형의 포인터를 통해 객체에 액세스 할 위험에 대한 컴파일러 경고라는 것입니다 (예외가 있지만 ) 이해할 수 있고 합리적인 경고입니다.char* 내 질문은 아래 코드와 관련이 있습니다. 포인터 주소를 캐스팅 void**하여이 경고를받을 수 …
38 c  pointers  casting 

3
0 크기의 동적 배열에 대한 포인터를 증가시키는 것이 정의되어 있지 않습니까?
AFAIK는 0 크기의 정적 메모리 배열을 만들 수는 없지만 동적 배열로 만들 수는 있습니다. int a[0]{}; // Compile-time error int* p = new int[0]; // Is well-defined 내가 읽은 p것처럼 과거의 한 요소처럼 작동합니다. p가리키는 주소를 인쇄 할 수 있습니다 . if(p) cout << p << endl; 반복기 (과거의 마지막 …

7
C에서 포인터 비교는 어떻게 작동합니까? 같은 배열을 가리 키지 않는 포인터를 비교해도 괜찮습니까?
K & R (C Programming Language 2nd Edition) 5 장에서 다음을 읽었습니다. 첫째, 특정 상황에서 포인터를 비교할 수 있습니다. 경우 p와 q다음의 관계가 좋아 점 같은 배열의 구성원에 ==, !=, <, >=제대로, 등 일을. 동일한 배열을 가리키는 포인터 만 비교할 수 있음을 의미하는 것 같습니다. 그러나이 코드를 시도했을 때 char …

4
void * function ()은 함수에 대한 포인터 또는 void *를 반환하는 함수입니까?
의 의미가 혼동 void *function()됩니다. 함수에 대한 포인터 void*입니까 아니면 함수를 반환 합니까? 나는 항상 포인터를 반환하는 재귀 함수로 데이터 구조에서 사용했지만 멀티 스레딩 ( pthread) 의 코드를 볼 때 동일한 함수 선언이 있습니다. 이제는 차이점이 무엇인지 혼란 스럽습니다.

3
C는 C ++에서 std :: less에 해당합니까?
나는 최근에 일의 정의되지 않은 동작에 질문에 대답 한 p < q경우 C에서 p와 q다른 개체 / 배열에 대한 포인터이다. C ++ <은이 경우 와 동일한 (정의되지 않은) 동작을 하지만 포인터를 비교할 수있을 때 std::less와 동일한 것을 반환하고 <할 수없는 경우 일관된 순서 를 반환하는 표준 라이브러리 템플릿 을 제공합니다 …

1
C에서 겹치는 객체의 의미는 무엇입니까?
다음 구조를 고려하십시오. struct s { int a, b; }; 일반적으로 1 이면이 구조체의 크기는 8이고 정렬은 4입니다. 두 개의 struct s객체를 생성하고 (보다 정확하게는 두 개의 객체를 할당 된 저장소에 쓰면) 두 번째 객체가 첫 번째 객체와 겹치는 경우 어떻게해야합니까? char *storage = malloc(3 * sizeof(struct s)); struct s …

1
__func__ 포인터의 두 constexpr 인스턴스의 차이점이 여전히 constexpr입니까?
이것이 유효한 C ++입니까? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC와 MSVC는 괜찮다고 생각하지만 Clang은 그렇지 않다고 생각합니다. 컴파일러 탐색기 . 모든 컴파일러는 이것이 컴파일러 탐색기 라는 것에 동의합니다 . int main() { constexpr auto p = __func__; constexpr auto p2 = p; …

1
불완전한 유형에 대한 포인터가 불완전 할 수 있습니까?
수 int (*)[]불완전한 유형을 수? C 2018 6.2.5 1의 말 : 변환 단위 내의 다양한 지점에서, 객체 유형이 불완전 하거나 ( 해당 유형의 객체 크기를 결정 하기에 충분한 정보가 없음) 완료 (충분한 정보가 있음) 될 수 있습니다. 따라서 유형의 크기를 알면 유형이 완전한 것 같습니다. 6.2.6.1 28은 특정 유형의 포인터가 …

4
배열에 대한 포인터의 역 참조에서 sizeof는 어떻게 작동합니까?
여기 에 4 개의 정수 ptr배열 arr에 대한 포인터 가 있습니다. ptr전체 배열을 가리 킵니다. ptr[0]또는 *ptr배열의 첫 번째 요소를 가리 키므로 1을 추가하면 배열 ptr[0]의 두 번째 요소의 주소 가 제공됩니다. 사용 sizeof(ptr[0])하면 왜 첫 번째 요소의 크기가 아닌 16 바이트 전체 배열의 크기를 4 바이트로 제공 하는지 이해할 …
9 c  arrays  pointers 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.