Giả sửTôi tự hỏi điều gì thực sự & lợi nhuận?
Trường hợp đầu tiên
int a;
int *p= &a ; it works no error
trường hợp thứ hai
long int a;
long int b;
b = & a; it wont work
Hầu hết chúng ta nói b là một biến không phải là một con trỏ. Nhưng hãy xem bên dưới.
Câu hỏi đặt ra là nếu &a
trả lại địa chỉ là số nguyên không dấu thì tại sao chúng ta không thể gán nó vào một biến bình thường? Nhưng tại sao chỉ với con trỏ? Xem bên dưới
b = (unsigned int) &a ; it works after typecasting though its not practicable.
Nếu địa chỉ là định dạng số nguyên thì tại sao số nguyên không dấu hoặc dài lưu nó? Tôi đã nghĩ, phải có một số bí mật ẩn đằng sau nó. Bất cứ ai có thể tiết lộ nó? Những gì tôi nghĩ là, con trỏ phải làm một cái gì đó bên trong nhưng tôi tự hỏi nó sẽ là gì và tại sao một biến bình thường không thể được.
Cảm ơn tất cả các câu trả lời của bạn nhưng câu hỏi thực sự thực sự là gì trả về &a
? Giá trị số nguyên hay không? nếu nó là số nguyên tại sao một biến không thể giữ nó? long int a = 65535 \ hợp lệ tại sao không int a = & b nếu giá trị của địa chỉ b là 65535
Tôi không lo lắng khi sử dụng nó làm con trỏ, hãy đặt câu hỏi là chỉ lưu giá trị. Không trì hoãn địa chỉ. Mọi người nói 32 hoặc 64 bit, tôi không lo lắng về điều đó. Tại sao nó không thể lưu địa chỉ nếu địa chỉ là một số nguyên?
Ý tôi là lý do tại sao không thể chúng ta gán giá trị, tôi không nói với gán các thuộc tính của con trỏ đến biến nhưng chỉ gán giá trị thats nó
a=65535
b = a \\ works it assigns b - 65535
&a=65535
b = & a \\ doesn't work, if address is a some integer value,why we can't store it in a variable?
lấy chút 16 làm ví dụ con trỏ bình thường (các địa chỉ) là 2 byte và kích thước biến là 2 byte vì sao chúng ta không lưu trữ địa chỉ trong biến khác nếu địa chỉ là giá trị số nguyên mà câu hỏi của tôi tìm thấy nhiều câu trả lời như ++ nó tăng thêm 4 con trỏ và giá trị 1 đến biến, không lo lắng về điều đó chỉ việc gán giá trị là câu hỏi quan trọng hơn.
b = & a ; address of a is 4000
++b ; becomes 4001 thats it,thats not a problem
Biến "bình thường" là gì? "con trỏ phải làm điều gì đó bên trong" Đúng. Nhiều hơn những gì bạn cần biết? Chúng ** không ** số nguyên. Chúng là con trỏ. Vui lòng ** cập nhật ** câu hỏi của bạn để giải thích ý bạn là "biến thông thường". –
Trong khi đó là một số nguyên bên dưới nắp, các loại không khớp, vì vậy bạn không thể gán chúng. Điều đó giống như nói 'UnrelatedClassA' và 'UnrelatedClassB' chỉ là byte, vậy tại sao bạn không thể gán một cái cho nhau? Đó là một phần của hệ thống kiểu. –