#include <stdio.h>
int main(void)
{
char* arr[1]={\"asdf\"};
printf(\"%s\", arr[0]);
return 0;
}
이코드에서요.
char* arr[1]={\"asdf\"}; 이게 나타내는것이
arr[0]에다가 \"abcd\"의 주소값을 대입하는거잖아요...
그렇다면 다음줄에
printf(\"%s\", *arr[0]);
라고 해야될꺼라생각하는데... 그게 아니네요...
설명좀 부탁드려요 ㅠㅠ
dhf
배열이잖소
ㄴ??
배열이라고 멍청아
겅부 다시하고 오는게 좋을듯요
char* arr[1]={\"asdf\"}; << 이게 머죠? 포인터에다가 그냥 문자열 우겨넣은거 아닌가요? abcd의 주소를 넣는 부분은 안보이는데여..
이게 되는지는 모르겠는데 일단 된다면 그 이유는 문자 1개는 1바이트고 char형도 원래는 1바이트입니다. 근데 포인터형은 문자를 담는게 목적이 아니라 주소값을 담는게 목적이기 때문에 모든 주소는 4바이트로 이루어져있습니다. 때문에 char형 포인터 변수도 4바이트의 크기를 가지고 asdf라는 4개의 문자를 담을 수 있는 메모리 크기를 가지는거죠
arr[x] ≡ *(arr + x) 이것은 진리다