되도 안하는 질문같은데ㅜㅜ
나오
방금 잠시 본소슨데;;맞나 모르겠네요..일단 적어볼께요 ㅜ1. #includestdio.h
2. void(main)
3. {
4. int a;
4. int *p;
5.int arr[3];
6. p=&arr[0];
7. for(a=0;a3;a++)
8. scanf(%d,p+a);
9. for(a=0;a3;a++)
10. printf(arr[%d):%d,*(p+a));
11. }
궁금증 1
6번줄에
p=&char[0];이거를
*p=&char[0];
이렇게 해주는면 안되는건가요??
차이점이 무엇인지;;;
궁금증 2
지금 6번줄에
p는 arr의 주소값을 받았잫아요
제가 알기로는 주소값은 +2씩 증가한다고 들었는데요;;
8번줄에서 +1씩 증가하게해주면 101 102 103 이렇게 주소값이 올라갈텐데;;
이것이 맞는건지?
궁금증 3
8번째 줄에서 scanf 에서는*(p+a)라고 써주지 않아도 되나요??
그렇다면 써도 되는건가요??
포인터란 정말어렵네요 ㅜㅜㅜ
질문하기도 힘들구 ㅜㅜㅜ휴~
-
앵초
음..과연 그렇군요~ 감사합니다 /^ ^
-
심플포텐
2. 주소값의 증감되는 크기는 포인터가 가리키는 변수의 타입에 따라 다릅니다.
int* 타입이면 가장 오른쪽의 *를 뺀 int의 크기만큼 증감됩니다.
다시 말하자면
int* p = (int*)1000; // 올바르지 않은 방법입니다만 설명을 위해서...
p + 1은 1000 + sizeof(int) * 1이 되어서 1004가 됩니다. (int가 4바이트 정수형일 때)
3. scanf()함수에는 입력받을 변수가 위치한 주소를 넘겨야 합니다.
그래서 보통 -
간조롱
저도 잘아는건없지만^^
변수선언을 int *p; 라고 하셨는데 이 *p가 무엇을 가르키는지 정의된게 없어보이네요?
p=&char[0]; //p= cahr0번지 주수값 ex 0x1000
*p=&char[0]; // *p가 가르키는 주소값을참조하여 값을반환 ex) ex 0x1000값이 정수10이라면 10을가르킴