指针作为函数参数时程序没有修改指针

intcreat(structsoldier*s_head,intc,intm){structsoldier*s_p,*s_q;inti=1,j=c,k=0;s_head... int creat(struct soldier *s_head,int c,int m)
{
struct soldier *s_p,*s_q;
int i=1,j=c,k=0;
s_head=s_p=s_q=0;
for(;i<=c;i++)
{
s_p=(struct soldier *)malloc(sizeof(struct soldier));
s_p->number=i;
s_p->flag=0;
s_p->id=i;
if(s_head==NULL)
s_head=s_p;
else
s_q->next=s_p;
s_q=s_p;
}
s_p=s_head;
while(j>=m)
{
s_p=s_head;
k=1;
while(s_p)
{
if(s_p->flag==0)
{
if(s_p->number%m==0)
{
s_p->number=k++;
}
else
{
s_p->flag=1;
j--;
}
}
s_p=s_p->next;
}
}
return j;
}

为什么我调用这个函数时,传递给形参s_head的指针没有变呢?
展开
 我来答
lr638638
2010-05-30 · 超过25用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:23.1万
展开全部
因为s_head是一个指针类型的形参,在函数中不能够改变指针所指向的地址,只能够改变指针所指向的地址的值,可以把函数的形参表列改为int creat(struct soldier **s_head,int c,int m) ,这样就可以改变s_head指针所指向的值了,在函数中有些地方可能也要修改一下,如:s_head=s_p=s_q=0;改为*s_head=s_p=s_q=0; 等等 自己尝试一下就行了。。。
危献e3
2010-05-30 · TA获得超过2053个赞
知道大有可为答主
回答量:2738
采纳率:0%
帮助的人:1968万
展开全部
在C中没有传递所谓的指针 指针仍然是按值传递
之所以看起来是传止是因为你在里面拿着它当指针操作的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式