У меня есть этот кусок кода:C печать Программирование указатели
printf("Address for ptr_one %p\n", &ptr_one);
printf("Non-Address for ptr_one %p\n", ptr_one);
printf("value for ptr_one %p\n\n", *ptr_one);
выход:
Address for ptr_one 0xffffcbd8
Non-Address for ptr_one 0x600042b26
value for ptr_one 0x19
Из того, что я понимаю, первая строка является адресом указателя, а третий является значение, которое по этому адресу. Но какова вторая строка печати?
Он был инициализирован, как, например:
int *ptr_one = (int *)malloc(sizeof(int));
*ptr_one = 25;
редактировать: добавлен инициализировать код
В зависимости от определения 'ptr_one' и как он был назначен. – dbush
Nah, первая печатает адрес переменной, которая содержит указатель на что-то еще. Второй печатает этот указатель. - Предполагая, конечно, имя на самом деле является представителем контента, и оно было начато правильно, как сказал дбуш. – enhzflep
'printf (« Non-Address for ptr_one% p \ n », ptr_one);' это адрес, который содержит '* ptr_one'. 'printf (« Адрес для ptr_one% p \ n », & ptr_one); это адрес' ptr_one' – tesseract