2011-04-08 2 views

답변

31

차이가 없습니다입니다.

이것은 표기법이 아니며 의미가 아닙니다.입니다. 이 두 개의 포인터를 선언하는 것처럼 정말 위와 같은 일을하고 때

int *a, b; 

명확하게,

int* a, b; 

반면, int*int을 보인다 선언되어 있기 때문에 두 번째는, 덜 오해의 소지가입니다 .

+0

좋은 설명 – cc4re

3

두 개의 선언은 단일 포인터를 선언 할 때 동일합니다. 이것에 대한 자세한 내용은 link

17

좋은 질문입니다.

  • 널리 C에서 사용 int* p

    • ++ 프로그래머
    • int* p, q 잘못 둘 pq도 가독성 경우가 향상되는 두 줄에 선언 선호 선도 포인터 (것을 의미 할당을 지정하고 특정 선/변수를 신속하게 잘라내거나 붙여 넣거나 주석을 달기가 쉽습니다.)
    • int* p 시각적으로 분리 된 ATES는 명백하게 역 참조를 나타냅니다
    • *p 식별자의 유형
    • ...&x ++ C에서
    • 명확 ...& x는 참조 변수를 선언해야하는 동안 주소를 취하고있다 (당신이 당신의 바이너리 operator*2 * 3 알라에 공백을 넣어 가정), 및 ... & ...입니다
  • int *p

    • 널리 사용 비트 단위 AND 연산자 d 프로그래머가
    • int *p, qp이 포인터이고 q이 아닌 것을 분명히 나타냅니다.
    • int *p 시각적 ... 함수 선언에서 나타나는 타입 마찬가지로

(좋든 나쁘) 포인터 디 레퍼런스로부터

  • 시각적으로 구별 식별자와 종류를 혼동

    int* f(), g(); // declares int g(); 
    int *h(), (*i)(); // i is pointer to function returning int 
    int *const*m(), n(); // m returns pointer to (const-pointer to int) 
            // n returns int 
    

    ...그러나 적어도 함수 인자는 너무 털이 없어서는 안됩니다. 타입 지정은 쉼표로 구분하여 시작됩니다.

    코딩 스타일/코드베이스가 한 줄의 소스 코드에서 여러 개의 선언을 사용하는 경우 일반적으로 int *p이 적합합니다. 그렇지 않으면 int* p은 형식과 다음 식별자를 명확하게 구분합니다.

    이 모든 경우 사람들의 선호도는 주로 익숙한 것을 기준으로합니다.

  • 0

    두 선언은 완전히 동일합니다.