[英]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
s
为string
类型的参数。 当 function 开始执行时,参数s
被赋值为对应参数的值,就像s = name;
已被处决。
然后,在 function 内部, s
指的是这个参数,它具有调用 function 的参数的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.