Cho em hỏi sự khác nhau giữa:
scanf("%d", a)
và scanf("%d", &a)
`scanf("%d", a)` và `scanf("%d", &a)` khác nhau như thế nào?
Theo mình biết được thì cái đầu nghĩa là cho bạn nhập 1 số nguyên nhưng nó ko gán vào a
còn cái số 2 thì cái số đầu tiên bạn nhập vào sẽ gán vào a còn số còn lại thì ko
a phải là con trỏ, nếu không a sẽ bị hiểu thành con trỏ => …
Bạn giải thích rõ hơn đuọc ko ?
C chỉ hỗ trợ truyền tham trị, nên muốn có tham biến thì phải dùng trick qua con trỏ (truyền vào địa chỉ của biến). Về nguyên tắc, nắm được địa chỉ thì sửa được ô nhớ (còn bị kick ra hay không thì…)
Ngoài ra bản chất của scanf
làm cho không thể kiểm soát được tham số đầu vào (compile-time ), nên đọc biến thành ra địa chỉ là chuyện có thật.
3 Likes