1031478839 发表于 2020-11-29 22:57:37

这两种方法有什么区别?指针

写一个函数,求出一个字符串的长度。在main函数中输入字符串,并输出其长度。
#include<stdio.h>
#define N 50
int a(char *str);
int main()
{
        char str;
        scanf("%s",str);
        a(str);
        return 0;
}
int a(char *str)
{
        int i=0;
        do
        {
                i++;
        } while (str != '\0');
        printf("字符串的长度为%d", i);
        return 0;
}

*********************************************************************


#include<stdio.h>
#define N 50
int a(char str);
int main()
{
char str;
scanf("%s",str);
a(str);
return 0;
}
int a(char str)
{
int i=0;
do
{
i++;
} while (str != '\0');
printf("字符串长度为%d", i);
return 0;
}

始不垂翅 发表于 2020-11-29 23:34:16

同不懂{:10_256:}……蹲一个大佬发言

风过无痕1989 发表于 2020-11-30 00:19:55

始不垂翅 发表于 2020-11-29 23:34
同不懂……蹲一个大佬发言

你就不能自己发题目呀?你今天已经偷窥了好几道题了,一个不让你任何代价的最佳答案都不想选?

你选了最佳答案后,是系统给我们回答并获得了这个最佳答案者进行奖励:鱼币+3,荣誉+2,技术+1,而你自己不需要付出任何的东西(鱼币、荣誉),不过是举手之劳而已

风过无痕1989 发表于 2020-11-30 00:42:11

这两种方法没有区别:
第一种实参是数组名(将数组的首地址传递给函数),形参是指针(接收主调函数传递过来的数组首地址),然后利用循环(以 str != '\0' 作为循环结束标志)来进行字符串长度的统计(循环多少次,数组长度就是多少,也即字符串的长度是多少)。
第二种实参是数组名(将数组的首地址传递给函数),形参也是数组,表面上两个数组是同一个数组,其实是两个不同的数组,只不过它们使用了相同的数组名字而已(这好比名字叫张三的人,长江路有个张三的,黄河路也有个叫张三的,同名同姓而已,是不同的两个人)。形参的作用也是接收从主调函数传递过来的字符串的首地址,然后利用循环(以 str != '\0' 作为循环结束标志)来进行字符串长度的统计

1031478839 发表于 2020-11-30 16:14:03

风过无痕1989 发表于 2020-11-30 00:42
这两种方法没有区别:
第一种实参是数组名(将数组的首地址传递给函数),形参是指针(接收主调函数传递过来 ...

那第二种方法既然是不同的数组,怎么能做到统计字符串长度的?

风过无痕1989 发表于 2020-11-30 18:38:54

1031478839 发表于 2020-11-30 16:14
那第二种方法既然是不同的数组,怎么能做到统计字符串长度的?

数组的长度在编译器预处理时就已经确定了,因为 #define N 50
页: [1]
查看完整版本: 这两种方法有什么区别?指针