#include <stdio.h>int main(){ int* a; *a = 10; printf("%d", *a);}디버깅하면 초기화되지 않은 'a' 지역 변수를 사용했습니다.라면서 안 됨..
int *a, // int형 변수의 주소를 담는 a라는 변수를 선언
*a = 10; a가 가리키는 주소(int가 있음, 즉 해당 주소에 있는 변수에) 10을 대입
??
여기서 a는 뭘 가리키고있나? 아무것도 없음. 초기화를 안해줬기때문에
int b; 등을 선언 후 a = &b; 하고나면 *a = 10;과 같은 구문을 사용할 수 있음
printf("%d", *a); 포인터라고 명시해줬는데?
아 그렇게 쓰는 거임?.. ㅇㅋ..
int* a = 10; 이렇게 쓰면 10밑에 빨간줄 뜨는데 왜 포인터 선언이랑 초기화가 동시에 안 되는 거야?
printf는 함수이고, 함수에 *a라는 표현식을 매개변수로 넘겨준거임. *a는 a가 가리키는 주소로 가서 값을 읽으라는 명령이고.
선언부에서의 *와 그 이후 사용할때의 *가 의미가 다름
선언할때 int* 라고 하는것은 "이 변수의 타입은 int의 주소값을 담는 int*형이다" 라는거고, *a 라고 쓰는건 a를 역참조하는것임
int *a = (이 위치에는 int형 변수의 주소값이 들어가야함)
아하 꼬마웜~
개발접어라
ㄴ@ㅁ