Con trỏ là một điều mới đối với tôi và tôi đang cố gắng để hiểu nó, nhưng tôi sẽ không cho và hy vọng tìm hiểu nó.Sự khác biệt giữa scanf ("% d", * p) và scanf ("% d", p) là gì?
Sự khác nhau giữa scanf ("%d", *p)
và scanf ("%d", p)
là gì?
Trong ví dụ tôi thấy rằng nếu tôi muốn nhập một số giá trị trong một biến, tôi nên sử dụng scanf ("%d", p)
. Điều đó không có ý nghĩa với tôi. Không phải là scanf ("%d", *p)
?
Tôi giải thích nó là: "đặt một số giá trị nguyên mà con trỏ trỏ tới" và ví dụ nó trỏ trên biến x
và sau đó nó phải là x = 10
, nhưng nó không phải là. Và làm thế nào để sử dụng scanf()
và con trỏ để đặt giá trị trong một mảng?
Tôi đang gặp phải vấn đề gì và ở đâu? Tôi đang cố gắng học điều này bằng ngôn ngữ C, vì nó là thứ mà tôi phải sử dụng trong lớp của mình.
Ví dụ:
#include <stdio.h>
int main() {
float x[10], *p;
int i;
p = &x[0];
for (i = 0; i < 10; i++) {
scanf("%d", p + i);
}
for (i = 0; i < 10; i++) {
printf("%d", *(p + i));
}
return 0;
}
Tại sao chỉ p + i
trong for() {}
đầu tiên và *(p + i)
trong vòng lặp thứ hai? Tôi sẽ đặt *(p + i)
cũng trong for() {}
đầu tiên. *(p + i)
với tôi giống như: "thành phần thứ (p + i) là gì và làm cho nó bằng một số giá trị".
Có lẽ bạn nên thêm các loại ... – Deduplicator
'p' là gì? Nếu 'p' không phải là một con trỏ, bạn nên sử dụng' scanf ("% d", & p) ' – slugonamission
BTW: Kiểm tra giá trị trả về của' scanf() 'trước khi sử dụng những gì được hy vọng đọc. 'scanf ("% d ", p + i)! = 1) Rất tiếc();' – chux