char t[] = "DC TRASH CENTER INSCIDE";
char ** tp = &t;
// 이거임?
**&tp = 'a';
// 이거임?
*&*tp = 'a';// 이거임?
&**tp = 'a';
// 이거임?
&**&tp = 'a';
// 이거임?
&*&*tp = 'a';
// 아니면 이거임?
*&*&tp = 'a';
char t[] = "DC TRASH CENTER INSCIDE";
char ** tp = &t;
// 이거임?
**&tp = 'a';
// 이거임?
*&*tp = 'a';// 이거임?
&**tp = 'a';
// 이거임?
&**&tp = 'a';
// 이거임?
&*&*tp = 'a';
// 아니면 이거임?
*&*&tp = 'a';
포인터 머리아프네요.. 그래서 전 VB가 젤 적성에 맞는듯
표준 표기가 어딨어 다 용법이 있는데
그리고 죄다 틀린거같은데
ㄴ 그럼 뭔데
포인터가 가리키는 포인터가 가리키는 주소의 값을 변경해야 하니까 **tp = value 해야지
ㄴ 오류남
0xC0000005: 0x54204344 위치를 기록하는 동안 액세스 위반이 발생했습니다..
**&tp는 포인터의 포인터 변수인 tp의 주소값을 가져와서 다시 그 주소값이 가리키는 곳의 포인터가 가리키는 곳의 값을 가져오는거니까 *tp가 되고 이는 t의 주소와 같다
그..그렇다면.. 나는 자살하러
ㄴ 가지마
수학적 마인드 안받쳐주면 씹털릴듯
우선순위에 따라 괄호쳐서 생각해보면 쉽게 답 나오지 않나
ㄴ 그게 안되니깐 그렇지
그쪽분야 석박사까지 해서 논문 쓸꺼 아니면 그렇게까지 할 필요가 있나 싶다. 실제 코딩에서 그렇게 난해하고 헷갈리는 수식 잘 안쓰고 부득이한 경우에도 읽기 쉽게 우회해서 표현하는게 바람직하겠지
저 리터럴은 너무 기니까 짧은걸로 해볼게. char t[] = "ASDF"; 이건 마치 "ASDF" 라는 스트링 리터럴의 주소를 init 한것처럼 보이지만, 실상은 아니고 그냥 char t[5] = {'A','S','D','F','\0'}; 랑 동치임. 그럼 포인터 선언도 char (*tp)[5] = t; 로 해야지.
아, char (*tp)[5] = &t; 로 정정.
#define 으로 매크로는 해두면 되는데...
널문자 표기도 안되고, 너무하네.
미안타 ㅋ 본문 제대로 안봤네. &t 자체가 잘못된 표현이다. t는 배열명이잖아? 배열명의 이름은 포인터(주소)다. 그러니까 &t가 의미하는 바는 '주소의 주소'인데 아마 의심스런 포인터 어쩌고 하는 경고 뜰꺼다. 배열로 정의 변수이름은 &를 쓰면 안되는거다