#include<iostream.h>
void pr_str_array(char **q, int n);
main()
{
char a[2][10]={\"안녕하엔\",\"gsss\"};
char (*p)[10];
p=a;
pr_str_array(p,1);
}
void pr_str_array(char **q , int n)
{
cout<< *q+n <<endl;
}
================================================================
이런씩으로
배열 포인터는 어차피 주소를 가르키고있어서
굳이 &연산자를 사용할 필요가 없겠더라고 그리서 집어넣었는데
오류가생기는거야 현재 이중포인터에 a를 가르키는 주소값이들어갔다고생각하는데 말야
어디가 문제인지 말좀해줘
너 몇년도 책 보고 공부하고 있냐? iostream.h라니 ㅎㄷㄷ한데
6.0 이라서 그럼
배열 != 포인터야 디씨에서 리플들 보면 분위기가 배열이 포인터라는 분위기가 많은데 둘은 완전히 달라
여기서 p는 char[10] 을 가리키는 포인터인거지 p가 char** 라는건 아냐 메모리 레이아웃이 어떻게 될지 손으로 그려보면 감이 올겨
글고 진짜 6.0은 좀 버리자 6.0 쓰지 말래도 굳이 6.0을 고집하는 이유가 뭐야?
그냥 배열은 포인터와 비슷하기때문에 포인터 = 배열 이런식으로 써도 거의 상관이 없어 근데 이중배열 같은 경우에는 이중포인터 = 이중배열 이 성립되지가 않아 간단하게 예를 들어서 글에 소스에서 a를 a+1 에대한 주소를 보면 40바이트가 이동할꺼야
그런대 char **p 같은경우에는 p+1 에서 4바이트만 이동하지 간단하게 예기하면 서로 자료형이 다른거야 그러니까 함수에도 char (*q)[10] 으로 바꿔서 자료형을 맞춰줘야되
주소랑 정수의 덧셈 연산으로 배열을 흉내낸거죠. 좀 병맛