gpt4 book ai didi

使用指针更改原始字符串的值

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

我试图通过更改指针来更改原始字符串的值。

假设我有:

char **stringO = (char**) malloc (sizeof(char*));
*stringO = (char*) malloc (17);
char stringOne[17] = "a" ;
char stringTwo[17] = "b";
char stringThree[17] = "c";
char newStr[17] = "d";
strcpy(*stringO, stringOne);
strcpy(*stringO, stringTwo);
strcpy(*stringO, stringThree);
//change stringOne to newStr using stringO??

如何使用指针 stringO 更改 stringOne 使其与 newStr 相同?

编辑:我想这个问题相当不清楚。我希望它修改 *strcpy 从中复制的最新字符串。所以如果 strcpy(*stringO, stringThree); 被最后调用,它将修改 stringThree, strcpy(*stringO, stringTwo); 然后 字符串二

最佳答案

I want it to modify the latest string that strcpy was copied from. So if strcpy( ( *stringO ), stringThree ); was last called, it will modify stringThree, strcpy( (*stringO ), stringTwo ); then stringTwo etc.

用您的方法不可能做到这一点,因为您是通过使用 strcpy 制作字符串的副本 -- 而不是指向内存块。为了实现您的目标,我将执行以下操作:

char *stringO = NULL;

char stringOne[ 17 ] = "a";
char stringTwo[ 17 ] = "b";
char stringThree[ 17 ] = "c";
char newStr[ 17 ] = "d";

stringO = stringOne; // Points to the block of memory where stringOne is stored.
stringO = stringTwo; // Points to the block of memory where stringTwo is stored.
stringO = stringThree; // Points to the block of memory where stringThree is stored.

strcpy( stringO, newStr ); // Mutates stringOne to be the same string as newStr.

...请注意,我正在改变(更新)stringO 指向的位置,而不是将字符串复制到其中。这将允许您根据要求改变 stringO 指向的内存块中的值(因此这是存储最新的 stringXXX 的地方)。

关于使用指针更改原始字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18265923/

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