반응형
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을 더하는 것...
반응형
'개발 공부 > C언어' 카테고리의 다른 글
#10 C언어에서 헷갈리는 따옴표 " ' 구별해서 쓰는 법 (0) | 2022.08.02 |
---|---|
#9 C언어 scanf 함수에서 문자열 입력할때 공백처리 (0) | 2022.08.02 |
#7 C언어 포인터 변수의 크기, 1비트는 몇 바이트일까 (0) | 2022.08.01 |
#6 C언어 사칙연산할 때의 자료형 변환 (0) | 2022.08.01 |
#5 C언어 (++i, i++) 후위연산 전위연산 차이점 쉽게 이해하는 법 (0) | 2022.07.31 |
댓글