출력 - C 크기의 char 포인터



포인터 c (4)

이 char 변수의 크기가 1 인 이유는 무엇입니까?

int main(){

char s1[] = "hello";

fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) )    // prints out 1

}

https://src-bin.com


Answer #1

이 char 변수의 크기가 1 인 이유는 무엇입니까?

char 크기는 C 표준에 의해 1 바이트가 보장되기 때문에.

*s1 == *(s1+0) == s1[0] == char

문자 포인터의 크기를 얻으려면 sizeof 문자 포인터를 전달해야합니다.

sizeof(&s1[0]);

Answer #2

노타 : 원래의 질문은 처음에는 조금 바뀌었다 : 왜이 char 포인터의 크기가 1인가?

sizeof(*s1)

와 같다

sizeof(s1[0])char 객체의 크기이며 char 포인터의 크기는 아닙니다.

char 타입의 객체의 크기는 C에서 항상 1 이다.

char 포인터의 크기를 얻으려면 다음 식을 사용하십시오 : sizeof (&s1[0])


Answer #3

sizeof(*s1) 는 " s1 가리키는 요소의 크기"를 의미합니다. 이제 s1s1 의 배열이며 포인터로 처리 될 때 포인터를 사용하여 역 참조하면 char 유형의 값이됩니다.

sizeof(char)항상 하나입니다. C 표준은 그렇게하기를 요구합니다.

전체 배열의 크기를 원하면 sizeof(s1) 대신 사용하십시오.


Answer #4
sizeof(*s1) means its denotes the size of data types which used. In C there are 1 byte used by character data type that means sizeof(*s1) it directly noticing to the character which consumed only 1 byte.

If there are any other data type used then the **sizeof(*data type)** will be changed according to type.




sizeof