[英]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.