永发信息网

C语言中指针函数调用问题???

答案:1  悬赏:10  手机版
解决时间 2021-04-30 10:53
  • 提问者网友:我一贱你就笑
  • 2021-04-29 19:36

先看两个例子:

1、编一个程序,输出字符数组中最大字符和前一半字符中的最大字符:

#include <string.h>

char *c(char a[ ],int n)

{char *p,*pm=&a[0];

for(p=a;p<a+n;p++)

if(*pm<*p) pm=p;

return(pm);}

main()

{char b[80];int n;

scanf("%s",b);

n=strlen(b);

printf("max1=%c\n max2=%c\n",*c(b,n),*c(b,n/2));}

2、编一个函数,将两个字符串连接成一个字符串:

char *s(char *p1,char *p2)
{static char a[160],*p=a;
while(*p1!='\0') *p++=*p1++;
while(*p2!='\0') *p++=*p2++;
*p=*p2;return(a);}

main()
{char s1[80],s2[80];
scanf("%s%s",s1,s2);
printf("%s\n",s(s1,s2));}

前者

printf("max1=%c\n max2=%c\n",*c(b,n),*c(b,n/2));}

与后者

printf("%s\n",s(s1,s2));}
调用函数时前者带*号,后者不带,是因为前者返回值是指针,后者返回值是数组首地址吗??

如果是,为什么要这样书写????

最佳答案
  • 五星知识达人网友:洎扰庸人
  • 2021-04-29 19:42

两个函数返回的都是地址. 并没有指针和首地址的说法.


那么为什么第一个程序需要解引用输出. 而第二个则直接可以输出呢?


因为,第一个程序是输出单个字符%c,所以必须对地址进行解引用.


而第二个程序,输出的是字符串. %s就是通过字符串的地址输出整个字符串.直到遇到字符串结束符.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯