có phải là cách duy nhất nhận được địa chỉ của một địa chỉ trong C (đối diện dereference đôi để có một biến trung gianC địa chỉ của một địa chỉ của một biến
ví dụ như tôi đã:
int a;
int b;
int *ptr_a;
int *ptr_b;
int **ptr_ptr_a;
a = 1;
ptr_a = &a;
ptr_ptr_a = &(&a); <- compiler says no
ptr_ptr_a = &&a; <- still compiler says no
ptr__ptr_a = &ptr_a; <- ok but needs intermediate variable
nhưng bạn có thể làm ngược lại, ví dụ:
b = **ptr_ptr_a; <- no intermediate variable required
ví dụ như tôi không cần phải làm:
ptr_b = *ptr_ptr_b;
b = *ptr_b;
tại sao hai toán tử không đối xứng trong chức năng của chúng?
Vì con trỏ phải trỏ vào một số bộ nhớ. do đó, 'ptr_a = & a' có nghĩa là ptr_a trỏ trên a. nhưng, '&& a' -> không có 'con trỏ' trên đó con trỏ có thể trỏ. ptr_a là một số bộ nhớ trên ngăn xếp, vì vậy bạn có thể chỉ vào nó. – nothrow
Không có lý do gì để làm phức tạp mọi thứ: 'int * ptr_ptr_a = &ptr_a;' là tốt. – karlphillip
tất nhiên - có ý nghĩa sau khi bạn đã chỉ ra điều đó - rất cám ơn – bph