int * ptr =&arr;
이렇게 하면 절대 안됩니다 (제발 머리에 들어가라....)
배열을 포인터 변수에 할당하거나 배열의 주소값으로 뭘 하려고 할때는 '&'쓰면 안됨!!!
왜냐면 배열은 이름 그 자체로 배열의 시작주소값을 의미하기 때문입니다.
&arr[0]는 특정 배열의 주소를 가르키기에 &를 붙이지만 arr는 그 자체로 배열의 시작주소 값을 의미하기에 &를 붙이지 않습니다!!!
즉 '&'을 붙이고 싶으면 정확하게 위치를 표현해줘야 하고
int * ptr = &arr[0];
'&'을 안붙이려면 배열 이름만 써야합니다.
int * ptr = arr;
또 기억할 점 배열 arr[i] = *(arr+i) 이다.....
배열은 포인터, 포인터는 배열 int arr[]와 int * arr는 이음동의어입니다. 다른소리 같은 뜻!!!!
자꾸 (*arr+i) 이러고 있는데 이건 arr이 가르키는 변수에 1을 더하는 것...
'기타 > 지식' 카테고리의 다른 글
| [지옥에서온git] gistory 설치하면서 에러가 발생했는데 결국 해결했습니다. (0) | 2022.08.01 |
|---|---|
| [지옥에서온git] 드디어 [zsh command not found : brew] 해결!!!!!! (brew 설치하는 법) (0) | 2022.08.01 |
| #7 C언어 포인터 변수의 크기, 1비트는 몇 바이트일까 (0) | 2022.08.01 |
| #6 C언어 사칙연산할 때의 자료형 변환 (0) | 2022.08.01 |
| #5 C언어 (++i, i++) 후위연산 전위연산 차이점 쉽게 이해하는 법 (0) | 2022.07.31 |