Код прост, но я просто не понимаю, как он работает.Кажется, что все три переменные хранятся по одному и тому же адресу, возможно, str1 является просто псевдонимом для str [0], но когда я пытаюсь разыменовать их, я получаю разные результаты.
#include <stdio.h>
int main() {
char str1[] = "Hello";
printf("<========Addresses: =======> \n");
printf("%d\n", &str1[0]);
printf("%d\n", &str1);
printf("%d\n", str1);
printf("<========Values stored at the address(?!)=======> \n");
printf("%d\n", *(&str1[0]));
printf("%d\n", *(&str1));
printf("%d\n", *str1);
return 0;
}
И это то, что он печатает.
<======== Адреса: =======>
6356458
6356458
6356458
<======== Значения> хранятся по адресу =======>
72
6356458
72