求助
#include <stdio.h>void fun(int b[], int n)
{
int* p1, * p2, * p;
p1 = b; p2 = b + n - 1;
for(int i=0;i<=4;i++)
{
p = p1; p1 = p1 + 1; p2 = p;
}
}
int main()
{
int a = { 1,3,5,6 };
fun(a, 5);
for (int i = 0; i <= 4; i++)
printf("%d", a);
}
为什么经过fun函数后,数组a元素的值保持不变呢,地址不应该改变了吗 fun 中没有对 p, p1, p2 进行解引用,既然没有解引用,那么就不会修改 a 的值
还有啊,一个变量声明下来后,地址几乎是不可能改变了,更别说函数修改了 fun函数里p = p1表示p指向p1的地址,没有改变p1里面数据的值。
最后main函数里面打印a数组和你定义的时候地址是一样的,并且fun并不改变a中数据,所以什么都没变。 1
页:
[1]