예를들어
char *p
scanf(\"%s\", p)
여기서 scanf 전달인자로 포인터변수를 줄 때... 왜 주소연산자 안 붙여요??
scanf함수의 전달인자는 주소값을 알 수 있는 형태가 와야 되잖아요
그런데 char *p로 선언된 포인터변수에는 쓰레기값이 저장된상태고..
문자열을 입력받아서 포인터상수로 변환된 값을 변수p에 저장하려면
당연히 포인터변수p의 주소값을 scanf함수한테 알려줘야 되기땜에 &p 해야 맞지 않나요?ㅜㅜ
쉬운거 이해 못해서 슬픔 ㅜㅜ
char *p
scanf(\"%s\", p)
여기서 scanf 전달인자로 포인터변수를 줄 때... 왜 주소연산자 안 붙여요??
scanf함수의 전달인자는 주소값을 알 수 있는 형태가 와야 되잖아요
그런데 char *p로 선언된 포인터변수에는 쓰레기값이 저장된상태고..
문자열을 입력받아서 포인터상수로 변환된 값을 변수p에 저장하려면
당연히 포인터변수p의 주소값을 scanf함수한테 알려줘야 되기땜에 &p 해야 맞지 않나요?ㅜㅜ
쉬운거 이해 못해서 슬픔 ㅜㅜ
저건 에러...
메모리 할당받은담에 해줘야 되는거 아님??
C 문자열에 대해 다시 공부할 필요가 있어뵌다.
설명 좀 해주세요 ㅜ 모르곘음
포인터 공부 다시해 기본적인 개념부터 잘못알고있는듯 [핡]
문자열 상수를 포인터변수에 저장하는건 p = \"string\" 이런식이고, scanf에서 %s 는 전달받은 주소부터 입력받은 문자열을 하나하나 넣는거임 그러니까 그냥 주소만 전달하는거고 포인터 변수를 넣는게 맞지 하지만 저코드는 쓰레기값이 들어있으니 에러
int i = 10; int *p; p = &i; 라고 했을 경우
i=10; &i = 0x12345678, *p = 10; p =0x12345678; &p = 0xaabbccdd 이런식이기때문입니다.
p가 가지고 있는 값이 주소값이고,*p는 p가 가지고 있는 값을 주소로 보고 찾아갔을때 저장되어 있는값, &p는 p라는 변수의 주소입니다.