`scanf("%d", a)` và `scanf("%d%", &a)` khác nhau như thế nào?

c

(Nguyễn Hiếu) #1

Cho em hỏi sự khác nhau giữa:
scanf("%d", a)scanf("%d", &a)


(Gia Khang Nguyễn Lâm) #2

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


(rogp10) #3

a phải là con trỏ, nếu không a sẽ bị hiểu thành con trỏ => … :smiley:


(Nguyễn Hiếu) #4

Bạn giải thích rõ hơn đuọc ko ?


(rogp10) #5

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 (compiler time :smiley: ), nên đọc biến thành ra địa chỉ là chuyện có thật.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?