簡體   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