C函数实现 – 使用Pointer vs without Pointer
发布时间:2020-12-16 10:32:00 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用C,并且从来没有处理过我以前用过的语言中的指针,所以我想知道如果只是修改一个字符串,哪种方法更好. 指针串与正常. 此外,如果您想提供有关何时使用指针的更多信息,那将是很棒的.当我发现函数“normal”甚至会修改传递的字符串,并在main函数中
我刚刚开始使用C,并且从来没有处理过我以前用过的语言中的指针,所以我想知道如果只是修改一个字符串,哪种方法更好.
指针串与正常. 此外,如果您想提供有关何时使用指针的更多信息,那将是很棒的.当我发现函数“normal”甚至会修改传递的字符串,并在main函数中更新而没有返回值时,我感到很震惊. #include <stdio.h> void pointerstring(char *s); void normal(char s[]); int main() { char string[20]; pointerstring(string); printf("nPointer: %sn",string); normal(string); printf("Normal: %sn",string); } void pointerstring(char *s) { sprintf(s,"Hello"); } void normal(char s[]) { sprintf(s,"World"); } 输出: Pointer: Hello Normal: World 解决方法
C中的一个问题是阵列是二等公民.在几乎所有有用的情况下,当它们传递给函数时,数组会衰减到指针(从而丢失它们的大小信息).
因此,无论是将数组作为T * arg还是T arg []都没有区别 – 后者仅仅是前者的同义词.两者都是指向main()中定义的字符串变量的第一个字符的指针,因此它们都可以访问原始数据并可以对其进行修改. 注意:C始终为每个副本传递参数.在这种情况下也是如此.但是,当您传递一个指针(或一个衰减到指针的数组)时,复制的是地址,因此所引用的对象可以通过其地址的两个不同副本访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |