C / C ++에서 포인터 변수를 선언하는 올바른 방법
어떤 사람들은 포인터 변수를 선언하기 위해 다음 표기법을 사용하는 것을 보았습니다.
(a) char* p;
대신에
(b) char *p;
나는 (b)를 사용합니다. 표기법 (a)의 합리적 이유는 무엇입니까? 문자 포인터가 유형 자체가 아니기 때문에 표기법 (b)가 더 의미가 있습니다. 대신 유형은 문자이고 변수는 문자에 대한 포인터가 될 수 있습니다.
char* c;
이것은 char * 유형이 있고 변수 c가 해당 유형 인 것처럼 보입니다. 그러나 실제로 유형은 char이고 * c (c가 가리키는 메모리 위치)는 해당 유형 (char)입니다. 한 번에 여러 변수를 선언하면이 구분이 분명해집니다.
char* c, *d;
이상하게 보입니다. c와 d는 모두 문자를 가리키는 동일한 종류의 포인터입니다. 이 때문에 다음이 더 자연스럽게 보입니다.
char *c, *d;
감사.
Bjarne Stroustrup 님의 메시지 :
"int * p;"중에서 선택 및 "int * p;" 옳고 그름이 아니라 스타일과 강조에 관한 것입니다. C 강조 표현; 선언은 종종 필요한 악에 불과한 것으로 간주되었습니다. 반면 C ++는 유형에 중점을 둡니다.
"전형적인 C 프로그래머"는 "int * p;"라고 씁니다. 구문을 강조하는 "* p는 int입니다"라고 설명하고 스타일의 정확성을 주장하기 위해 C (및 C ++) 선언 문법을 가리킬 수 있습니다. 실제로 *는 문법에서 p라는 이름에 바인딩됩니다.
"일반적인 C ++ 프로그래머"는 "int * p;"라고 씁니다. "p는 int에 대한 포인터"라는 유형을 강조하여 설명합니다. 실제로 p의 유형은 int *입니다. 나는 분명히 그 강조를 선호하며 C ++의 고급 부분을 잘 사용하는 데 중요하다고 생각합니다.
출처 : http://www.stroustrup.com/bs_faq2.html#whitespace
한 줄에 여러 포인터를 선언하는 상황 (4 번째 예)에서 변수와 함께 별표를 사용하는 것이 익숙한 것이기 때문에 후자의 스타일을 권장합니다.
나는 개인적으로 *
나머지 유형과 함께 배치하는 것을 선호 합니다
char* p; // p is a pointer to a char.
사람들은 "그러면 char* p, q;
오해의 소지가있다"고 주장 할 것입니다 . "그러니 그렇게하지 마십시오".
쓰는 방법에는 차이가 없습니다. 그러나 한 줄에 두 개 이상의 포인터를 선언하려면 (b) 변형을 사용하는 것이 좋습니다. 원하는 것이 분명하기 때문입니다. 아래를보세요 :
int *a;
int* b; // All is OK. `a` is pointer to int ant `b` is pointer to int
char *c, *d; // We declare two pointers to char. And we clearly see it.
char* e, f; // We declare pointer `e` and variable `f` of char type.
// Maybe here it is mistake, maybe not.
// Better way of course is use typedef:
typedef char* PCHAR;
PCHAR g, h; // Now `g` and `h` both are pointers.
// If we used define construction for PCHAR we'd get into problem too.
타협은
char * p;
K & R 사용
char *p;
코딩 표준을 따르지 않는 한 그것은 당신에게 달려 있습니다.이 경우 다른 사람들이하는 일을 따라야합니다.
개인적으로 프로젝트에서 char *를 보는 것은 모두 선호도의 문제입니다. 별도의 줄에 여러 포인터를 선언하는 경향이 있습니다. 이를 수행하는 실제 "올바른"방법은 없으며 모든 것이 선호도에 달려 있습니다. 어떤 사람들은 (a) 읽기가 더 쉽다고 말하고 다른 사람들은 (b) 같은 줄에 같은 유형의 더 많은 변수를 선언하는 것이 더 쉽다고 말합니다.
나는 (b)가 더 일반적이라고 생각하고 어떤 경우에는
char * a;
또는 이와 비슷한 것. 다시 선호합니다. 당신이 편한 것이 무엇이든, 내가 작업중인 프로젝트가 무엇을 사용하든 나는 사용할 것입니다 (내가 (a)를 사용하는 경우에 내가 직접 작성하지 않는 한)
참고 URL : https://stackoverflow.com/questions/6990726/correct-way-of-declaring-pointer-variables-in-cc
'development' 카테고리의 다른 글
Bash 백틱을 올바르게 중첩하는 방법 (0) | 2020.10.09 |
---|---|
JavaScript 함수 선언 및 평가 순서 (0) | 2020.10.09 |
Maven 및 시스템 범위에 JAR 추가 (0) | 2020.10.09 |
파이썬에서 numpy 유형을 식별하는 방법은 무엇입니까? (0) | 2020.10.09 |
Android : 조각에 데이터 (추가) 전달 (0) | 2020.10.09 |