Asterisk를 통한 배열값 보기 관련
소유
질문 제목 :
Asterisk를 통한 배열값 보기 관련
질문 요약 :
Asterisk로 배열값을 보게 됐을때ex)int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
int arr[1] = 3;라고 했을때,*arr+1 = 1?
*(arr+1) = 3?이렇게 값을 괄호만으로 초기화된 값을 나누어 쓸수있는 이유는?질문 내용 : int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
arr[1] = 3;라고 했을때,
printf로 출력시,
*arr+1 은 최초 배열을 선언과 동시에 초기화했던 값 1을 보여줍니다.
하지만 *(arr+1)로 아스테릭을 괄호로 하여금 배열의 다음에 입력하면
*(arr+1) 은 다음에 인덱스로 초기화했던 값 3을 표시해줍니다.+추가
*arr+1=1;
*(arr+1)=3;
아스테릭을 이용해 배열의값을 찾아보는 방법은 위와 같으나,배열의 주소 자체를 통해 아스테릭을 사용시 이후 초기화했던 arr[1]=3만 반환해주고있습니다. (괄호를 하든 안하든)
*&arr[1]=3;
*(&arr[1])=3;
2차배열과 관련있는것같은데, 이렇게 되는 이유가 무엇인지 개념부분으로 접근해서
설명 부탁드립니다.
-
별글 2023-12-08
알면 알수록 즐거운 배열이네요. i[arr]는 좋은 정보네요 감사합니다 ^^;
-
곰돌이 2023-12-08
arr[i] 에서 [i] 는 포인터 연산자입니다.
arr[i] 와 *(arr+i) 는 완벽하게 같아요.
i[arr] 이라고 써도 상관없답니다. -
잎새 2023-12-08
아! 감사합니다! 제가 착각하고 있었던 부분이군요.
즉, *로 값을 보는 방법으로
arr+1은 arr는 시작주소이므로 *arr+1은 그 시작주소값에서 +1만 한경우고
*(arr+1)은 마치 *arr[0+1] 와 같으니 arr[1]의 주소값 자체를 보여주는거군요. -
Glisten 2023-12-08
*arr+1은 초기화값을 보여주는게 아닙니다.
*arr가 arr[0]을 가르키고, 그것에 1을 더하는, 즉, arr[0] + 1; 입니다.
*(arr+1)은 arr[0+1] , 즉 a[1]의 값이고요.
확인해보시려면 처음 arr[0]의 값을 다른값을 넣고 출력해보세요.