포인터를 선언합니다.유형과 이름 사이의 공백 왼쪽 또는 오른쪽에 아스타리스크가 표시됩니까?
중복 가능성:
char* 문자열과 char *string 중 어느 쪽이 더 말이 됩니까? C++에서의 포인터 선언: 아스타리스크 배치
많은 코드에서 혼합된 버전을 봐왔어요(이는 참고로 C 및 C++에 적용됩니다).사람들은 두 가지 방법 중 하나로 포인터를 선언하는 것 같은데, 나는 그것이 중요한지 어떤 것이 옳은지 전혀 모르겠다.
타입명 옆에 아스타리스크를 붙이는 첫 번째 방법은 다음과 같습니다.
someType* somePtr;
두 번째 방법은 다음과 같이 변수 이름 옆에 아스타리스크를 붙이는 것입니다.
someType *somePtr;
이게 한동안 날 미치게 하고 있어.포인터를 선언하는 표준 방법이 있습니까?포인터가 어떻게 선언되는지가 문제가 되긴 하나요?저는 두 선언을 모두 사용해 본 적이 있으며 컴파일러는 어느 쪽을 선택하든 상관하지 않는다는 것을 알고 있습니다.하지만, 내가 두 가지 다른 방식으로 선언된 포인터를 본 사실은 그 뒤에 이유가 있다고 믿게 한다.어떤 방법이 더 읽기 쉬울지, 아니면 논리적인지 궁금해요.
그건 취향의 문제이고, 일종의 성스러운 전쟁이죠, 브레이스 스타일처럼요.
스타일
someType* somePtr;
포인터 변수의 유형을 강조합니다.그것은 본질적으로, "유형"이라고 말하고 있다.somePtr포인터입니다.someType".
스타일
someType *somePtr
지적된 데이터의 유형을 강조하고 있습니다.이는 본질적으로 "이것이 지적한 데이터의 유형"을 말합니다.somePtr이someType".
둘 다 같은 의미이지만 포인터를 만들 때 주어진 프로그래머의 멘탈 모델이 포인터 데이터나 포인터 변수에 "집중"되는지에 따라 달라집니다.
중간에 놓기(와 같이)someType * somePtr)는 어느 쪽에도 커밋되지 않도록 하고 있습니다.
그건 중요하지 않아.이제 누군가가 나타나서 질문을 이중으로 종결할 것이고, 다른 누군가가 어떻게 그 질문을 할 것인지 보여줄 것이다.int* a동일한 선언에 여러 변수를 선언하면 다음과 같이 중단됩니다.int *a코드의 구문 구조를 더 잘 반영하고, 또 다른 것은 Strustrup이 코드의 구문 구조를 선호한다는 것을 보여줄 것입니다.int* a왼쪽에 활자를 함께 보관합니다.
많은 의견들이 있지만, 여기서는 "올바른" 방법이 없다.
상관없습니다. 개인적인 취향입니다.
타입을 함께 유지하는 것을 좋아하는 사람도 있습니다.
int* p;
다른 사람들은 다음과 같은 이유로 변수 옆에 표시되어야 한다고 말합니다.
int *p, x;//declare 1 int pointer and 1 int
int *p, *x;//declare 2 int pointers.
시간이 지남에 따라 당신은 이것을 간과하고 두 가지 변형 모두를 받아들이게 될 것이다.
그 차이는 C++가 C 위에 더 강한 타입의 시스템을 추가했기 때문입니다.C 프로그래머는 보통 "값"의 관점에서 생각하기 때문에
int *pValue;
"pValue의 참조 해제는 int"로 읽히는 반면 C++ 프로그래머는 "type"으로 생각하기 때문에
int* pValue;
"type pValue is pointer to int" 라고 되어 있습니다.컴파일러에서는 전혀 차이가 없습니다.그러나 C++에서 프로그래밍할 때 "값 의미론"을 고집하는 것은 C 프로그래머라는 것을 알게 될 것입니다.
내가 지금까지 봐온 모든 방법은
TheType *myPointer
TheType 유형의 POINTER를 선언하기 때문입니다.유사한 선언
TheType myVar
는 TheType 유형의 인스턴스 변수를 선언하는 것입니다.
또, 이것을 명확하게 해, 읽기 쉽게 할 수 있습니다.
TheType myVar, *myPointer;
변수 이름 옆에 아스타리스크를 붙이는 게 더 명확할 것 같아요.
해서 선언할 도 있어요.someType* one, two; 다 입니다.onetwo...someTypesomeType *one, *two는 이 문제를 회피합니다.
언급URL : https://stackoverflow.com/questions/2660633/declaring-pointers-asterisk-on-the-left-or-right-of-the-space-between-the-type
'source' 카테고리의 다른 글
| C/C++ 소스 코드 시각화 (0) | 2022.08.27 |
|---|---|
| [Vue warn] :$attrs는 읽기 전용입니다.[Vue warn] :$120은 읽기 전용입니다. (0) | 2022.08.27 |
| 고방사능 환경에서 사용하기 위한 애플리케이션 컴파일 (0) | 2022.08.27 |
| VueJs: TypeError: Object(...)가 함수가 아닙니다. "withScopeId" (0) | 2022.08.27 |
| mapGetters를 모듈과 루트의 게터와 동시에 사용하는 방법 (0) | 2022.08.25 |