포인터 선언; 유형과 이름 사이의 공백 왼쪽 또는 오른쪽에 별표가 있습니까? [복제]
가능한 중복 :
char * string 또는 char * string이 더 의미가있는 것은 무엇입니까? C ++에서 포인터 선언 : 별표 배치
많은 코드에서 혼합 버전을 보았습니다. (이것은 C와 C ++에 적용됩니다.) 사람들은 두 가지 방법 중 하나로 포인터를 선언하는 것처럼 보이며, 그것이 중요한지 어느 것이 올바른지 전혀 모릅니다.
별표를 유형 이름 옆에 두는 첫 번째 방법은 다음과 같습니다.
someType* somePtr;
두 번째 방법은 다음과 같이 변수 이름 옆에 별표를 두는 것입니다.
someType *somePtr;
이것은 지금 얼마 동안 나를 미치게 만들었습니다. 포인터를 선언하는 표준 방법이 있습니까? 포인터가 어떻게 선언되는지는 중요합니까? 이전에 두 선언을 모두 사용했으며 컴파일러가 어떤 식 으로든 신경 쓰지 않는다는 것을 알고 있습니다. 그러나 포인터가 두 가지 다른 방식으로 선언 된 것을 보았으므로 그 뒤에 이유가 있다고 생각하게됩니다. 두 가지 방법 중 하나가 누락되거나 읽을 수 있거나 논리적 인 경우 궁금합니다.
그것은 중괄호 스타일과 마찬가지로 선호와 다소 거룩한 전쟁의 문제입니다.
스타일
someType* somePtr;
포인터 변수의 유형을 강조하고 있습니다. 본질적으로 "유형 somePtr
은 포인터- someType
"입니다.
스타일
someType *somePtr
뾰족한 데이터의 유형을 강조하고 있습니다. 본질적으로 "가 가리키는 데이터 유형 somePtr
은 someType
"입니다.
둘 다 같은 것을 의미하지만, 포인터를 만들 때 주어진 프로그래머의 정신 모델이 "집중"되어 지적 대상 데이터 또는 포인터 변수에 의존하는지 여부에 달려 있습니다.
중간에 (as someType * somePtr
) 넣으면 어느 쪽이든 커밋을 피하려고합니다.
중요하지 않습니다. 누군가가 와서 질문으로 속임수로 닫히고 다른 사람은 int* a
동일한 선언에서 여러 변수를 선언 하면 방법이 어떻게 중단되는지 보여줄 것이며 그 방법 int *a
은 코드의 구문 구조를 더 잘 반영하고 다른 사람은 Stroustrup을 보여줄 것입니다 int* a
방법을 선호합니다 .
여기에는 많은 의견이 있지만 "올바른"방법은 없습니다.
중요하지 않습니다. 개인적인 취향입니다.
어떤 사람들은 유형을 함께 유지하기를 좋아합니다.
int* p;
다른 사람들은 다음과 같은 이유로 변수 옆에 가야한다고 말합니다.
int *p, x;//declare 1 int pointer and 1 int
int *p, *x;//declare 2 int pointers.
시간이 지남에 따라 당신은 이것을 간과하고 두 변형을 모두 받아들입니다.
C ++가 C 위에 더 강력한 유형 시스템을 추가했기 때문에 차이가 발생했습니다. AC 프로그래머는 일반적으로 "값"이라는 관점에서 생각합니다.
int *pValue;
"pValue의 역 참조는 int"라고 읽지 만 C ++ 프로그래머는 "유형"으로 생각합니다.
int* pValue;
"pValue 유형은 int에 대한 포인터"를 읽습니다. 컴파일러는 전혀 차이가 없습니다. 그러나 C ++로 프로그래밍 할 때 "값 의미론"을 주장하는 것은 C 프로그래머라는 것을 알게 될 것입니다.
변수 이름에 별표를 두는 것이 더 명확하다고 생각합니다.
You might mistakenly declare someType* one, two;
thinking that they are both pointers but only the variable one
is a pointer; two
is just a someType
. Declaring as someType *one, *two
avoids this problem.
Every single way I've seen ever is
TheType *myPointer
because you are declaring a POINTER of type TheType. Similar declaring
TheType myVar
would be declaring an instance variable of type TheType.
Also you can then clearly do this and have it easily readable
TheType myVar, *myPointer;
'development' 카테고리의 다른 글
TFS 체크인 오류-파일을 찾을 수 없습니다 (0) | 2020.07.25 |
---|---|
백본보기 : 상위에서 이벤트 상속 및 확장 (0) | 2020.07.25 |
OCaml의 int가 왜 31 비트입니까? (0) | 2020.07.25 |
Rails has_and_belongs_to_many 마이그레이션 (0) | 2020.07.25 |
WebAPI 삭제가 작동하지 않습니다-405 메소드가 허용되지 않습니다 (0) | 2020.07.25 |