我刚刚开始学习指针,经过大量添加和删除*
的代码后,将输入的字符串转换为大写的代码终于可以工作了。
#include <stdio.h>
char* upper(char *word);
int main()
{
char word[100];
printf("Enter a string: ");
gets(word);
printf("\nThe uppercase equivalent is: %s\n",upper(word));
return 0;
}
char* upper(char *word)
{
int i;
for (i=0;i<strlen(word);i++) word[i]=(word[i]>96&&word[i]<123)?word[i]-32:word[i];
return word;
}
我的问题是,在调用我发送的函数word
本身就是指针时,为什么在char* upper(char *word)
中为什么需要使用*word
?
是指向指针的指针吗?另外,是否存在char*
,因为它正确返回了一个指向字符/字符串的指针?请向我说明这是如何工作的。
这是因为您在这里只需要type
char upper(char c)
将是一个接受字符并返回字符的函数。如果要使用字符串,则约定是字符串是由空字符终止的字符序列。您不能将完整的字符串传递给函数,因此将指针传递给第一个字符,因此是char *upper(char *s)
。指向指针的指针将具有两个*
,例如char **pp
中的内容:
*字即使指针bt在函数中指向数组字,并且指针字实际上在传递参数的同时指向一个对象,并且传递“ pointee”的副本,即输入的字被传递,并且进行任何操作完成是在指针字上完成的,因此最后我们必须返回一个指针,因此返回类型指定为*。