아하
생활

생활꿀팁

정중한상괭이185
정중한상괭이185

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가 나옵니다. 이유가 궁금합니다.

2개의 답변이 있어요!