使用全局数组而不是指针对数组进行传递,以从Function传输字符串

ExagonX

从代码中可以看到,从函数中提取字符串是我使用的两种方法,第一种是使用指针,第二种是使用全局数组。两者都有相同的结果,但是我想知道使用一个或另一个是错误的,因为他们建议我在没有给出解释的情况下不要使用全局变量。

原谅我的无知,很遗憾,我没有人要问,在搜索引擎中,我还没有找到可以解决这个话题的人。

#include <stdio.h>
#include <string.h>

char MyArr[18] = {'\0'}; // Global Array //


// This function use a *Pointer //
const char * MyWordWP( void )
{

    return "Hello with pointer";
}



// This function use a global array  //
void MyWordArr( void )
{
     strcpy(MyArr, "Hello With Array");   

}



int main( void )
{
// Read pointer  //
    const char *MyW = MyWordWP( );
    printf( "With Pointer =  %s \n" , MyW );

//Set the global //
    MyWordArr();
    printf( "With Array = %s \n", MyArr);


    return 0;
}

谢谢您的支持。

RobertS支持Monica Cellio

为什么不过度使用全局对象和数组的一些原因例如:

首先,使用全局对象的函数不是很可重用。标识符硬编码在源代码中。这使得该功能的使用几乎是唯一的,这通常不是最佳解决方案。相反,参数允许传递来自不同标识符的对象的值,并且在指针的情况下也传递来自不同大小的数组的地址。

从函数返回值和指针的相反过程也是如此,就像您的情况一样。请注意,在函数内部,必须使用存储类说明符声明一个对象,static以在函数执行结束后保留​​在内存中,这对于返回指向函数局部对象的指针非常重要。

字符串文字的"Hello With Array"存在超出了函数的执行范围,MyWordArr()因为字符串文字一直驻留在内存中,直到程序完成。

其次,当源代码非常庞大时,您的代码可能变得难以为他人阅读和维护,而且对于您自己来说,也可能是您自己的代码,因为经过数百次函数调用后,您失去了一些精妙的概述,并可能会问自己:“什么是函数实际在做什么?” -与此相反,传递的参数和返回值描述了使用函数调用的意图和上下文。

第三,几乎可以从代码中的任何位置访问对象,这使得在大型程序中很难找到意外修改的原因。

第四,全局对象不是线程安全的。


因此得出结论:

这取决于使用情况。在您提供的示例中,由于程序较小且专注,它可能非常适合,但是通常,您应尝试(如果可能的话)避免使用全局对象,因为在大多数情况下,生产代码非常大,并且往往会自己砸脑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从函数C修改字符串的全局数组

来自分类Dev

为什么不将字符串文字作为对数组的引用而不是不透明的指针传递?

来自分类Dev

使用快速排序使用指针对数组进行排序

来自分类Dev

使用指针对数组进行排序-C编程

来自分类Dev

C编程:使用指针对数组进行排序的函数

来自分类Dev

将字符串从全局指针传递到strdup到2D VLA字符串数组

来自分类Dev

字符串对数组

来自分类Dev

字符串对数组

来自分类Dev

使用指针创建字符串数组

来自分类Dev

在Perl中使用逗号或点对字符串进行排序以对数组进行排序

来自分类Dev

按键中的字符串对数组值进行分组?

来自分类Dev

按键中的字符串对数组值进行分组?

来自分类Dev

对数字的字符串数组列表进行排序

来自分类Dev

对数组中的字符串项列表进行排序

来自分类Dev

Java:对数字字符串数组进行排序

来自分类Dev

在Javascript中对字符串值对数组进行排序

来自分类Dev

根据字符串值对数组项进行分组

来自分类Dev

从db中按字符串对数组进行排序

来自分类Dev

对数组中的字符串进行排序

来自分类Dev

将字符指针数组与字符串进行比较

来自分类Dev

使用jq按长度对数组中的字符串进行排序

来自分类Dev

如何在SwiftUI中使用本地化字符串对数组进行排序

来自分类Dev

如何使用reactjs通过字符串,数字和日期属性对数组进行排序?

来自分类Dev

在jQuery中使用整数字符串类型对数组进行排序

来自分类Dev

使用哈希集对数组中的字符串数量进行计数(无重复)

来自分类Dev

javascript-仅使用字符串中的数字对数组进行排序

来自分类Dev

如何在PHP中使用逗号分隔的字符串对数组进行排序?

来自分类Dev

是否可以使用javascript标记的模板字符串对数组值进行插值?

来自分类Dev

如何在jquery中使用字符串数组对数字进行排序

Related 相关文章

  1. 1

    从函数C修改字符串的全局数组

  2. 2

    为什么不将字符串文字作为对数组的引用而不是不透明的指针传递?

  3. 3

    使用快速排序使用指针对数组进行排序

  4. 4

    使用指针对数组进行排序-C编程

  5. 5

    C编程:使用指针对数组进行排序的函数

  6. 6

    将字符串从全局指针传递到strdup到2D VLA字符串数组

  7. 7

    字符串对数组

  8. 8

    字符串对数组

  9. 9

    使用指针创建字符串数组

  10. 10

    在Perl中使用逗号或点对字符串进行排序以对数组进行排序

  11. 11

    按键中的字符串对数组值进行分组?

  12. 12

    按键中的字符串对数组值进行分组?

  13. 13

    对数字的字符串数组列表进行排序

  14. 14

    对数组中的字符串项列表进行排序

  15. 15

    Java:对数字字符串数组进行排序

  16. 16

    在Javascript中对字符串值对数组进行排序

  17. 17

    根据字符串值对数组项进行分组

  18. 18

    从db中按字符串对数组进行排序

  19. 19

    对数组中的字符串进行排序

  20. 20

    将字符指针数组与字符串进行比较

  21. 21

    使用jq按长度对数组中的字符串进行排序

  22. 22

    如何在SwiftUI中使用本地化字符串对数组进行排序

  23. 23

    如何使用reactjs通过字符串,数字和日期属性对数组进行排序?

  24. 24

    在jQuery中使用整数字符串类型对数组进行排序

  25. 25

    使用哈希集对数组中的字符串数量进行计数(无重复)

  26. 26

    javascript-仅使用字符串中的数字对数组进行排序

  27. 27

    如何在PHP中使用逗号分隔的字符串对数组进行排序?

  28. 28

    是否可以使用javascript标记的模板字符串对数组值进行插值?

  29. 29

    如何在jquery中使用字符串数组对数字进行排序

热门标签

归档