c언어 여쭈어봅니다ㅠㅠㅠㅠ 뭐가 문제인지 모르겠습니다
#define CRTSECURENOWARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void inputWords(char* words[] , char contents[]) {
char* word;
word = contents;
words = (char)calloc(strlen(contents) + 1, sizeof(char));
// 할당해준 메모리는 총 12바이트
strcpy(words, word);
}
int main(void)
{
char* arrptr[3];
inputWords(arrptr, "hello world");
printf("%s\n", arrptr);
// arrptr[0]에서 가리키는게 "hello world"
printf("%d\n", sizeof("hello world"));
// 당연히 12가 나옴
printf("%d\n", sizeof(*arrptr))
// "hello world"의 크기니까... 12가 나오겠지...? 엥 4가 나오네
return 0;
}
질문1.
저는 저 "hello world" 에 접근할때 (arrptr[0]) 이나 *(*arrptr)) 하면 접근이 가능할 줄 알았는데
그것도 아닌건가요? 저 그림은 제가 해당 코드 내용을 그림으로 그려본겁니다.
질문2.
분명히 printf("%s", arrptr) 하면 "hello world" 가 잘 나옵니다.
그런데 printf("%d", sizeof(*arrptr)) 을 하면 당연히 sizeof("hello world") 라서 12가 나올 줄 알았는데
4가 나옵니다. 이유가 궁금합니다.