위 예제에서 T가 출력되는 이유가
data 자체는 포인터배열 data[0]을 의미하고
data[0]은 문자열 상수 Tiger의 T를 가리키고 있는거 맞지?
그리고 첫번째 참조가 data[0]을 역참조해서 문자열 상수 Tiger의 T의 주소를 가리키고
이걸 다시 역참조하면 문자열 상수 T의 주소를 역참조 한거니까 T의 값이 나오는거임?
위 예제에서 T가 출력되는 이유가
data 자체는 포인터배열 data[0]을 의미하고
data[0]은 문자열 상수 Tiger의 T를 가리키고 있는거 맞지?
그리고 첫번째 참조가 data[0]을 역참조해서 문자열 상수 Tiger의 T의 주소를 가리키고
이걸 다시 역참조하면 문자열 상수 T의 주소를 역참조 한거니까 T의 값이 나오는거임?
아니
왜??
그건 이제부터 니가 찾아봐야지
내가 말한게 맞는거같은데 왜 틀린거임
C로 개발헐꺼야?
data 자체는 포인터 배열 &data[0].... 문자열들의 주소 배열을 가지는 배열의 첫 주소를 의미하고 data[0]은 문자열 &"Trigers"(해당 문자열의 첫 주소)를 의미하고 data[0] 은 그러면 "Trigers"의 주소라는 뜻이야(위에 줄 좀 헷갈릴 거 같아서 다시 설명) *data 는 "Trigers" 문자열의 주소겠지 , **data 는 "Trigers" 문자열에서 엘리먼트를 가리키게 역참조가 하나 더 추가 됬으니깐 (char)'T' 가 출력되는 거 아닐까?
뭔가 이상한데? data = data[0] 을 포인터 연산으로 환원하면 *[data+0] 아니야? 여기다 주소연산을 사용하면 data[0] 포인터 그 자체의 주소값이 나오는데??? 너 설명 자체가 좀 이상해;
그리고 어제 하루종일 포인터 공부해보니까 저기서 const 자료형 위치에 사용된 참조연산자는 역참조의 의미가 아니라 이 포인터 변수는 char *의 포인터 변수를 갖는다는 l-value의 저장공간의 의미를 갖는다가 정답이었더라 ?
"Tiger"가 char* 자료형이기떄문에 %c할때 1바이트만 인식해서 T만 나옴
%s *data하면 Tiger 다 나옴 널문자나올때까지 읽거든