|
안녕하세요? 레조입니다.
요즘에는 게시판에 신경쓰는게 힘든걸 보니 많이 게을러 진거 같습니다. --;
답변이 아니라도 자주 읽어봐야하는데..
음.. 각설하고.. --;
일단 한마디로 두가지는 모양에 차이가 있습니다. *^^*;;
그리고 그 뒤에 C++설계자의 재치?가 숨어있다고 해야할까요?(아니면말고.. --;)
더욱더 C++이 미려하게 되도록 노력한 흔적이라 해야할까요..?
일단 char와 char*형은 기능이 전혀 다르다는것을 다 아는 사실입니다.
그런데 여기서 재미있는것은 만일 이것을 '*'를 사용하지 않고 각각의 타입에 이름을
주었다고 한다면... point_to_int... --;
각각의 기본 타입에(char, int, float등등) 포인터 타입이 덩달아 생기니...
복잡한 소스코드일 경우 가독성은 떨어지며 표현 역시 더욱 복잡하게 느껴질 것입니다.
이것을 하나의 심볼 '*'로 대체한 것입니다.
즉 두가지 선언은 모양의 차이이지 특별한 차이는 없습니다.
의미적으로 따지면 char* aa;가 더 알맞겠지만 이는 그뿐입니다.
즉, *는 타입(형)의 일부이지 이름의 일부가 아니라는 것을 좀더 분명하게 해주는
코드입니다.
이를 여러개 선언하려면
char* a, * b, * c, * d;
이런식으로 해야겠지요.(변수이름의 일부가 아니라는식으로.. -,-;
그럼 계산식에서, 특히 곱셈에서 저렇게 사용하면?
int aa = 100, bb = 200;
int* i1, * i2;
i1 = &aa;
i2 = &bb;
printf( "%d %d\n", *i1, *i2 );
* i1 = 10;
* i2 = 2;
* i1 = * i1 * * i2;
printf( "%d %d\n", *i1, *i2 );
더 어지러워 지겠네요.
즉, 어떤 표현을 사용하는지는 가독성을 중심으로 생각하면 되겠습니다.
char* a; 또는 char *a; 모두 좋은 표현이지만 가독성 측면에서 생각해보면
위의 코드는
int aa = 100, bb = 200;
int *i1, *i2; // 여러개 선언은 역시 붙여서
i1 = &aa;
i2 = &bb;
printf( "%d %d\n", *i1, *i2 );
*i1 = 10;
*i2 = 2;
*i1 = *i1 * *i2;
printf( "%d %d\n", *i1, *i2 );
그럭저럭 띄울때 보다는 보기 좋지요?
게다가 김백일님처럼 함수의 리턴형에는 붙인다든지하면 역시 가독성 측면에서
좋을것입니다.
±è°æ·¡ 님이 쓰신 글 :
: char *str;
: 이랑
: char* str;
: 이랑 무슨 차이가 있는지 자세히 설명해주세요
: 계속 질문해서 죄송 ㅠㅠ;
:
: 그럼 즐거운하루보내세용
|