После вопроса: Почему адрес массива равен его значению в C?
#include <stdio.h>
#define N 10
char str2[N]={"Hello"};
int main(){
printf("sizeof(str2): %d bytes\n", sizeof(str2));
printf("sizeof(&str2): %d bytes\n", sizeof(&str2));
return 0;
}
Вывод:
sizeof(str2): 10 bytes
sizeof(&str2): 4 bytes
Я знаю, что только str2
является адресом первого элемента в массиве str2
. И что когда str2
является аргументом sizeof
, он возвращает размер всего массива str2.
Кроме того, &str2
также является адресом первого элемента в arr str2
, но из другого типа (char (*)[N]
== указатель на массив). Но как &str2
ведет себя, когда это аргумент sizeof
?