int a=3;
int b=4;
scanf("%d",&a+b);
printf("%d",a+b);
했을 때 어떤 값을 입력하든
컴파일 실행은 되겠지만
a+b의 값을 입력해도 a랑 b의 값을 모르는데 a+b를 출력하면 로직 에러아님?
방금 해보니까 a+b 자체도 어떤 값을 입력하든 저런 경우는 항상 7이 나오더라.
int a=3;
int b=4;
scanf("%d",&a+b);
printf("%d",a+b);
했을 때 어떤 값을 입력하든
컴파일 실행은 되겠지만
a+b의 값을 입력해도 a랑 b의 값을 모르는데 a+b를 출력하면 로직 에러아님?
방금 해보니까 a+b 자체도 어떤 값을 입력하든 저런 경우는 항상 7이 나오더라.
+ (q+i) 였나 글 삭 되서 안보이는데 이것도 i 개수를 알아도 정상작동이 안됨. i가 상수라는 보장이 없음.. 상수일 때는 어떻게 되는 지 모르겠네
const 선언하면 scanf로 어떤 값 입력되든 항상 같게 나와서 결과는 똑같이 7이 나오네
cin cout은 상수로 선언하면 막아버리고, 단순히 a+b를 입력하려고 하면 마찬가지로 막아져서 안됨
하고싶은 말은 4번문제는 포인터를 알아야 나오는 문제가 아님.. 의미를 찾자면 로직 에러를 배우는 느낌 아닐까 싶다
for i = 0 to 100 에 &(q+i) 하면 &q[0], &q[1]. &q[2] ... 랑 똑같은거 아님?
int *q=g[100]으로 선언햇는데 int *q=*g 로 보는게 맞지 않을까
int g[100] int*q=g;p
int *q=&(*g);
일케 보는게 맞는듯..
? int g[100] 하고 int *q=g 했으면 &(q+i)는 &g[i] 랑 같은거 아님?
아 내가 댓글을 &q[0] 으로 썼네 원글삭제되서 좀헷갈렸음 하여튼 저거 맞는 코드 아닌가?
방금해보니까 주소로 나오네
int g[100]; int* q = g; int i; // g배열 원소 하나하나에 값을 입력하는 문장 for (i = 0; i < 100; ++i) { scanf("%d", &g[i]); cout << g[i] << " "; 찍어보니까
int *q=*g; 처음 생각했던게 맞는 것 같네요.. int *g=&x; 일케 하니까 똑같게 나왔음.. 같은 포인터 참조라 머지 했네
어차피 배열로 입력되면 값은 int *(g+0) 부터 받잖어.. int *q=g; 일케 하면 int *이 자동 타입이니까 같은 포인터타입끼리 참조
그러니까 int g[2]=3; 하고 cout<<*(g+2); 하면 3나오는 것처럼. int *(g+100); int *q=g; 하면 되는거
선언은 절케 안되는데 좀 공부해봐야겠네 머지
아 선언이 안되는 이유는 g타입이 선언이 안되서 그런거고, int배열이랑 int* 내부구조도 int 배열이 int*으로 되어있지만 조금 다른 거 가틈
아 생각해보니 &q+i가 &g[i]랑 같은게 아니라 q+i가 &g[i]랑 같나? 씨를 업무에 안쓴지 오래되서 존나헷갈리네 ㅋㅋㅋ
char x; char* g = (char *)"arr"; 배열은 요런느낌을 이용한 코드인듯..
가리켜보니 배열처럼 나오는데.. 어떤 구조인지 모르겠네... 위 방식도 아니고 직접 확인해봐야되나..
1978년에도 구현되어있던 내용이라 모르겠음..저거 알정도면 다 뜯어봐야될듯
찾아보니 malloc 이용한 것 같네요.. 의문점은 해결한듯
int *arr=int*(malloc(sizeof(Int)*4); 이런식으로 int arr[4]; 이런구조인듯.. 어셈을 꼭 배워야될듯..
(int *)malloc(sizeof(int)*4); 이거