繁体   English   中英

为什么这段代码有效? function 的输入是“string s”,但我们给出的实际输入是“int name”。 C语言

[英]Why does this code work? The input for the function is "string s" but the actual input we are giving is "int name". C language

代码摘要:此代码应该从用户那里输入一个字符串,output 有多少个字符。 (不故意使用 strlen)

注意:所以这是哈佛 CS50 课程中的代码,get_string 是教师实施的 function 以规避 scanf function。

我的疑问:看看用户定义的 function int string_length (string s),如何得到“string s”作为输入和一个 int 作为返回值。

但是稍后在代码的 main() 部分中,我们存储用户输入的字符串的变量是“name”,但在 string_length 的实现中不再使用“name”,而是使用“s”。

#include <cs50.h>
#include <stdio.h>
  
int string_length(string s);
  
int main(void)
{
    string name = get_string("Name: ");
    int length = string_length(name);
    printf("%i\n", length);
}
  
int string_length(string s)
{
    int i = 0;
    while (s[i] != '\0')
    {
        i++;
    }
    return i;
}

当您调用 function 时,您将其传递给 arguments(或可能是零参数)。 int length = string_length(name); ,代码string_length(name)使用参数name调用string_length

Arguments 按值传递给 function。 function 接收 arguments 的值。

当 function 开始执行时,其参数被分配为 arguments (C 2018 6.5.2.2 4) 的值。 int string_length(string s)中,代码string s sstring类型的参数。 当 function 开始执行时,参数s被赋值为对应参数的值,就像s = name; 已被处决。

然后,在 function 内部, s指的是这个参数,它具有调用 function 的参数的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM