C 中是否可以使函数采用两种不同数据类型的变量作为参数?

问题描述 投票:0回答:2
int count_letters(string text, int length);
int count_words(string text);
int count_sentences(string text);

void final(int letters, int words, int sentences);

int main(void)
{
    string text = get_string("Text: \n");
    int length = strlen(text);
   //printf("%i\n",length);

    int letters = count_letters(text, length);

这里我需要在所有这四个函数中使用变量“length”,但是所有这些函数都已经有一个字符串类型参数。是否可以在函数中传递不同类型的参数?

基本上我想知道这是否正确(第 1 行和第 13 行),如果不正确,那么我如何在所有这些函数中使用这个长度变量,而不必在每个函数中本地定义它?

c function arguments parameter-passing
2个回答
2
投票

C 字符串以空字符结尾。您不需要将字符串的长度传递给函数。你需要迭代直到到达这个字符

示例:

int count_letters(string text)  //better to return size_t
{
    int result = 0;
    for(int index = 0; text[index] != '\0'; index++) 
    {
        if(isalpha((unsigned char)text[index]))
        {
            result += 1;
        }    
    }
    return result;
}

1
投票

当然有可能。你已经做到了:

int count_letters(string text, int length);

count_letters
有一个名为
string
text
参数和一个名为
int
length
参数。

我确信您已经知道一些允许这样做的函数:

     printf("the magic number is %d\n", 42);
//   ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^
// function      const char *           int
© www.soinside.com 2019 - 2024. All rights reserved.