【C/C++】函数中指针的传递

本文探讨了在C/C++中,为何通过函数传递指针时,仅修改指针所指向的值而未改变指针本身。内容解释了值传递的概念,指出num的值能被修改是因为传递了其地址。同时,强调了当传递如char *qs这样的指针时,若要修改其指向的内容,需要传递指针的地址,即使用char **qs。通过示例代码阐述了指针、指针的指针如何操作及传递,以达到预期的值修改效果。
摘要由CSDN通过智能技术生成

主函数


qooks[i].s = (char *)malloc(sizeof(char)*100);
gets(qooks[i].s);
qooks[i].qs = (char *)malloc(sizeof(char)*100);
qooks[i].num = (int *)malloc(sizeof(int));
processQuerywords(qooks[i].s,qooks[i].qs,qooks[i].num);
printf("%s\n",qooks[i].qs);

函数

int processQuerywords(char *s,char * qs,int * num)
{
	int i;
	* num = *s++ - '0';//改变的是num的数据 地址并没有发生改变
	++s;
	qs = ++s;
	printf("%s\n",*qs);
	return 0;
}

本来是想通过函数processQuerywords返回给主函数的num和qooks[i].qs的值都进行修改,

但是函数返回后,发现只有num的值发生了改变,qs的值却没有任何变化。

错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值