c语言指针,下面这题看不懂,求解😭
#include<stdio.h>intfun(char*x){char*y=x;while(*y++);return(y-x-1);}voidmain(){chara[...
#include<stdio.h>
int fun(char *x)
{
char *y=x;
while(*y++);
return(y-x-1);
}
void main()
{
char a[]={"hello"};
printf("%d",fun(a));
}
while(*y++);是什么意思啊
return(y-x-1);又是什么意思 展开
int fun(char *x)
{
char *y=x;
while(*y++);
return(y-x-1);
}
void main()
{
char a[]={"hello"};
printf("%d",fun(a));
}
while(*y++);是什么意思啊
return(y-x-1);又是什么意思 展开
5个回答
展开全部
while (*y++)
因为++运算符优先级比*高,所以先对指针y加1,再取出指针y指向的 字符
如果取出的字符不为0(\0) 就循环
因为字符串数组 a[]={hello} 是依字符'\0'结尾,字符'\0'的ASCII 码值 是0
这样当指针y 指向'\0'时 就结束循环。
return (y-x-1)
y x 都是指针,是内存地址,y-x-1 就两个指针相减再减1 ,返回运算结果。
从实际执行结果看 返回的是5
这样y-x=6
其实实际循环了5次,但是y 和 x 两个指针却相差6
是因为++的优先级比*高导致的。
希望我的回答对你有点帮助,很高兴和你一起讨论和学习C语言。
C语言的指针是比较难理解的知识点,需要多练习才能掌握。
展开全部
C语言函数里面的指针。你这种情况就可以暂时理解成,在main函数里传走的参数是具体的,在你写的函数里面发生了修改,所以说在main函数在得到的数据中也是被修改后的数据。如果没有把指针带走的话,就好像两个小孩抄作业,不论抄作业的小孩是怎么抄的,被抄作业的那个人作业的内容是不变的。但是带指针的话,就好像别人抄他作业的时候直接写在他的作业本上了。抄作业的那个同学没有自己的作业本用的是别人的作业本。我这么说可以吗?好像也不太清楚,如果你还有其他疑问的话,可以继续追问
更多追问追答
追问
while(*y++);是什么意思啊
一直往下一个元素指下去吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*y是指针,
所以while(*y++)是找串尾符
returen()是函数的返回值,也就是说你建的这个fun()运行完数值就等于这个返回值
总的来说,是一个计算长度的程序,可以寻味一下return(y-x-1)里面的-1是怎么来的
所以while(*y++)是找串尾符
returen()是函数的返回值,也就是说你建的这个fun()运行完数值就等于这个返回值
总的来说,是一个计算长度的程序,可以寻味一下return(y-x-1)里面的-1是怎么来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int fun(char *x)
{
char *y=x;
while(*y++); //指针不断后移,直到遇到串尾符为止(后自增,指针停在串尾符的后面一位)
return(y-x-1); //返回字符串的长度("ABCD"的长度为4)
}
void main()
{
char a[]={"hello"};
printf("%d",fun(a)); //输出5
}
int fun(char *x)
{
char *y=x;
while(*y++); //指针不断后移,直到遇到串尾符为止(后自增,指针停在串尾符的后面一位)
return(y-x-1); //返回字符串的长度("ABCD"的长度为4)
}
void main()
{
char a[]={"hello"};
printf("%d",fun(a)); //输出5
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询