通过函数传递字符串(C编程)

问题描述 投票:4回答:3

我刚刚开始学习指针,经过大量添加和删除*的代码后,将输入的字符串转换为大写的代码终于可以工作了。

#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*,因为它正确返回了一个指向字符/字符串的指针?请向我说明这是如何工作的。

c string function pointers uppercase
3个回答
5
投票

这是因为您在这里只需要type


3
投票

char upper(char c)将是一个接受字符并返回字符的函数。如果要使用字符串,则约定是字符串是由空字符终止的字符序列。您不能将完整的字符串传递给函数,因此将指针传递给第一个字符,因此是char *upper(char *s)。指向指针的指针将具有两个*,例如char **pp中的内容:


0
投票

*字即使指针bt在函数中指向数组字,并且指针字实际上在传递参数的同时指向一个对象,并且传递“ pointee”的副本,即输入的字被传递,并且进行任何操作完成是在指针字上完成的,因此最后我们必须返回一个指针,因此返回类型指定为*。

© www.soinside.com 2019 - 2024. All rights reserved.