После вопроса: Почему адрес массива равен его значению в 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?
