C语言函数的调用一题

来源:百度知道 编辑:UC知道 时间:2024/09/21 01:26:51
以下程序运行后,输出结果是()
#include<stdio.h>
ss(char *s)
{char *p=s;
while(*p)p++;
return(p-s);}
main()
{char *a="abded";
int i;
i=ss(a);
print("%d\n",i);}
A.8 B.7 C.6 D.5
请讲解一下。

虽然我不太懂指针,但都看懂了
函数ss(char *s)的作用是求字符串s的长度
char *p=s;//将字符串s的首地址赋给指针p
while(*p)p++;//当p指向的地址未结束时,p指向下一个地址,当循环结束时,p指向的是字符串s的末地址加1
return(p-s);//返回末地址减去首地址的值,就是返回字符串s的长度

所以整个程序就是输出字符串s的长度

该题貌似有错...

D。5
char *a="abded"; //这里字符串会在末尾自动加个结束符\0也即总共6个字符
*p被赋值后,指向字符串中字符a的地址,
while(*p)p++; //这里只有*p遇到结束符\0才结束,实际标准写法是:
while(*p!='\0')p++;//这样在p增加了5了时指向了\0,结束循环。返回
现在的地址与开始地址的差。即5.

你这个程序是不是有问题哦!
函数没有返回值类型呀!!

答案选D

d
s代表第一个字符的地址
字符串以'\0'做结尾
while(*p)p++当*p='\0'结束循环,此时p代表'\0'地址
比如a地址为1那么b为2,d为3,e为4,d为5,'\0'为6
6-1=5
选d

这个题有错吧。。。。。