帮忙看看这段代码有什么问题
#include <stdio.h>
void fun(int* p)
{
p++;
}
int main()
{
int line[10];
int* p=line;
for(int i=0; i<10; i++)
{
*p=i;
fun(p); //p++
}
for(i=0; i<10; i++)
printf("%d,", line[i]);
return 0;
}
我想输出0,1,2,3,4,5,6,7,8,9
函数传递的参数 ?
[解决办法]
#include <stdio.h>
void fun(int* &p)//加个引用就对了,这样就能改变p的地址,不加引用只能改变它所指向的值
{
p++;
}
int main()
{
int line[10];
int* p=line;
for(int i=0; i<10; i++)
{
*p=i;
fun(p); //p++
}
for(int i=0; i<10; i++)
printf("%d,", line[i]);
return 0;
}
[解决办法]
fun只是对形参p的指针进行了自增,不会改变实参p的指针指向。调用时只是将实参p的值赋值给形参,两个然后互不相干。想要改变实参的值,传递其地址或者引用给函数就可以了