//删除字符串前导0的函数
void fun_head(char*str);
#include<stdio.h>
int main()
{
char str[100]={'\0'};
gets(str);
fun_head(str);
puts(str);
}
void fun_head(char*str)
{
char*p=str;
while(*p=='0')
{
p++;
}
str=p;
puts(str);
}
为什么在fun函数内和fun函数外打印str的结果是不一样的??
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 於黾 2022-10-19 08:03关注
在fun_head函数内部,str是形参,你改变了str的指向,让它指向p,而p这个指针已经指向了'0'后面的字符,那你打印的时候肯定只能打印出半截字符串啊
而在main里,str是在main里定义的数组,这两个str不是同一个变量,而且你在函数里改变形参的指向也不会影响外面传进来的实参的实际指向本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Python报错怎么解决
- ¥15 simulink如何调用DLL文件
- ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
- ¥30 线性代数的问题,我真的忘了线代的知识了
- ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
- ¥188 需要修改一个工具,懂得汇编的人来。
- ¥15 livecharts wpf piechart 属性
- ¥20 数学建模,尽量用matlab回答,论文格式
- ¥15 昨天挂载了一下u盘,然后拔了
- ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题