提问人:smbhav 提问时间:11/26/2022 最后编辑:marc_ssmbhav 更新时间:8/8/2023 访问量:323
在 C 语言中是否有可能使函数将两种不同类型的变量作为参数?
Is it possible in C to make a function take two different data-types of variables as argument?
问:
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 行),如果不是,那么我如何在所有这些函数中使用这个长度变量,而不必在每个函数中本地定义它?
答:
2赞
0___________
11/26/2022
#1
C 字符串以 null 字符结尾。您无需将字符串的长度传递给函数。你需要迭代,直到你达到这个角色
例:
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;
}
评论
0赞
smbhav
11/26/2022
这行得通。好把戏。我不知道。谢谢
0赞
smbhav
11/26/2022
我能问你一些事情吗?这里 - 为什么在没有它的情况下工作时使用 unsigned char .它的重要性是什么?if(isalpha((unsigned char)text[index]))
0赞
Jabberwocky
11/26/2022
有时我真的想知道他们在这些 CS50 课程中教了人们什么......
0赞
smbhav
11/26/2022
我只在第 2 周。
0赞
Andreas Wenzel
11/26/2022
@smbhav:这个C++问题的答案解释了为什么 cast to 是必需的。出于同样的原因,它在 C 中也是必需的,并且与函数 .只有上面的字符代码才需要强制转换,因此低于该数字的字符代码不需要强制转换。unsigned char
isdigit
isalpha
127
1赞
user253751
11/26/2022
#2
当然有可能。你已经做到了:
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
评论
int length
count_words
int count_words(string text, int length) ...
int count_letters(string text, int length);
int letters = count_letters(text, length);
string
cs50.h