首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用函数的给定pgm的备用pgm

不使用函数的给定pgm的备用pgm
EN

Stack Overflow用户
提问于 2014-07-16 17:10:38
回答 4查看 66关注 0票数 0
代码语言:javascript
复制
#include <stdio.h>

void lower_string(char*);


    int main()
   {
      char string[100];

      printf("Enter a string to convert it into lower case\n");
      gets(string);

      lower_string(string);

      printf("Entered string in lower case is \"%s\"\n", string);

      return 0;
    }

    void lower_string(char *string)
     {
       while(*string)
       {
       if ( *string >= 'A' && *string <= 'Z' ) 
       { 
           *string = *string + 32;
        } 
        string++;
       }
} 

在这个程序中,如果我用*string替换string[]会怎么样?有人能帮助我不使用任何函数来编写上面的程序吗?请解释一下(*str)这是什么意思?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-16 17:11:37

代码语言:javascript
复制
void lower_string(char *string);

代码语言:javascript
复制
void lower_string(char string[]);

char []类型的参数调整为char *类型。

当然,当string*运算符的操作数时,如in:

代码语言:javascript
复制
while (*string)

然后您不能将它更改为string[],因为这里的*是间接操作符,而不是类型名称的一部分。

票数 4
EN

Stack Overflow用户

发布于 2014-07-16 17:16:06

常见问题:问题-6.4

由于数组会立即衰减为指针,因此数组永远不会实际传递给函数。您可以假装一个函数接收数组作为参数,并通过将相应的参数声明为数组来说明它: 空f(char a[]) {.} 字面上解释说,这个声明没有用,所以编译器转过身来假装编写了指针声明,因为函数实际上会收到这样的结果: void (char *a) {.} 谈论一个函数没有什么特别的问题,就好像它接收了一个‘’数组,如果这个函数传统上被用来对数组进行操作,或者这个参数在函数中自然地被当作一个数组来处理。 这种将类似数组的声明器转换为指针的方法只适用于函数形式参数声明,而不是其他任何地方。

票数 1
EN

Stack Overflow用户

发布于 2014-07-16 17:14:58

符号[]在某种程度上基本上等同于*。您可以接受char[],仍然可以将它作为*指针对待,也可以接受char*作为参数,使用[]作为常规数组访问它--完全相同。您总是得到一个指向内存中那个点的指针,但是当它是一个用[]定义的数组时,指针将是常量(不能尊重它,只能访问它所指向的位置)。当使用char str[100];声明数组时,实际上是声明一个名为strconst char*,并指向堆栈中的一个内存区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24786754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档