gpt4 book ai didi

c - 如果我将它传递给函数,如何复制字符串中的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:59 25 4
gpt4 key购买 nike

将字符串传递给函数后,我无法复制字符串中的内容。在主要功能中我这样做了:

char *s;
function(s);

然后在函数中,我在字符串中复制了一些东西,但是当我在 main 中打印它时,它打印出 (null),为什么?

最佳答案

void function(char*s) 这样的函数需要一个指向正确分配的对象的指针(或者 NULL 来明确表示没有传递任何有效的东西)。分配一个对象有几种方法,一种是malloc,另一种是自动或静态存储持续时间的对象。

但是至少有一件事你不能做:传递一个没有初始化的指针;这个指针可能指向“某处”并产生未定义的行为:

void function(char*s) {
if (s != NULL) { // valid?
strcpy(s,"Hello world!");
}
}

int main() {
char s1[20]; // automatic storage duration
char s2[] = "some initil value"; // automatic storage duration
static char s3[30]; // static storage duration
char *s4 = malloc(30); // dynamic storage duration

function(s1);
function(s2);
function(s3);
function(s4);
function(NULL); // explicitly something NOT pointing to a valid object

free(s4); // deallocate object with dynamic storage duration

// don't do that:
char* s5; // s5 is not initiaized
function(s5); // -> undefined behaviour
}

关于c - 如果我将它传递给函数,如何复制字符串中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com