programing

C 및 C++ 포인터 표기에서 별을 넣을 위치

codeshow 2023. 9. 24. 13:09
반응형

C 및 C++ 포인터 표기에서 별을 넣을 위치

중복 가능:
C/C++에서 포인터 변수를 선언하는 올바른 방법

한동안 다음이 짜증이 났었는데, 제 포인터 표기법에 별을 어디에 넣어야 할까요?

int *var; // 1

그리고.

int* var; // 2

분명히 같은 일을 하고, 두 표기법 모두 정확하지만, 제가 보는 대부분의 문헌과 코드는 첫 번째 표기법을 사용합니다.

타입과 변수 토큰을 혼용하는 것보다 타입과 변수명을 공백으로 구분하여 2번째 표기법을 사용하는 것이 '올바른' 것이 아닐까요?

아니요. 절대로.<g>

그러나 다음을 고려합니다.

int* var1, var2;

여기, 그 위치는*오해의 소지가 있습니다. 왜냐하면 그것은 적용되지 않기 때문입니다.var2, 어느것이int아닌int*.

리눅스 커널 코딩 스타일 규칙은 다음과 같습니다.

int *ptr1 , *ptr2;

그래서 관례대로 채택해야 한다고 생각합니다.

포인터 데이터 또는 포인터 유형을 반환하는 함수를 선언할 때 선호되는 용도는*는 데이터 이름 또는 함수 이름에 인접하고 형식 이름에는 인접하지 않습니다.예:

char *linux_banner;
unsigned long long memparse(char *ptr, char **retptr);
char *match_strdup(substring_t *s);

저는 이 표기의 이유 중 일부는 변수의 용법과 선언이 비슷해 보이기 때문이라고 생각합니다.

int *var;
int x;
x = *var;

당신은 그것이 탈참조라는 것을 말하는 것이라고 생각할 수도 있습니다.var당신에게 int를 줄 것입니다.

언급URL : https://stackoverflow.com/questions/13894228/where-to-put-the-star-in-c-and-c-pointer-notation

반응형