#include <stdlib.h>
#include <stdio.h>
int main (void)
{
int a[] = {1,2,3,4,5};
int b[] = {0,0,0,0,0};
int *p = b;
for (int i =0; i < 5; i++)
{
b[i] = a[i]+1;
*p = a[i]+1;
p++;
}
for (int i = 0; i < 5; i++)
{
printf (" %i \t %i \t %i \n", *p++, b[i], a[i]);
}
return 0;
}
Đối với mã này tôi nhận được lý do tại sao đầu ra cho a và b nhưng tại sao con trỏ có cùng giá trị?con trỏ c và mảng
* p là b [0] = a [0] +1 phải không? Vì vậy, p + + có nghĩa là địa chỉ tiếp theo cho b vì vậy nó là b [1] = a [1] +1.
ie
*p b a
1 2 1
2 3 2
3 4 3
4 5 4
5 6 5
Bạn bị nhầm cột của bạn: nó phải là '* p b a', không phải' a b * p'. – dasblinkenlight
yeah tôi đã làm, xấu của tôi. Cố định – user2135885
Vì lợi ích của sự thay đổi kháng, tốt hơn làm 'int b [sizeof (a)/sizeof (a [0])] = {...' và thay thế các giá trị '5' bằng cùng một thuật ngữ. Bằng cách này, bạn có thể thay đổi mảng 'a' và mọi thứ sẽ ổn. – glglgl