将char指针/数组传递给函数

我试图更多地理解C语言中的char指针,但有一件事让我明白了。

假设我想将char指针传递给函数并更改该指针表示的值。下面是一个示例:

int Foo (char *(&Msg1), char* Msg2, char* Msg3){
    char *MsgT = (char*)malloc(sizeof(char)*60);
    strcpy(MsgT,"Foo - TEST");
    Msg1 = MsgT; // Copy address to pointer
    strcpy(Msg2,MsgT); // Copy string to char array
    strcpy(Msg3,MsgT); // Copy string to char pointer
    return 0;
}

int main() {
    char* Msg1; // Initial char pointer
    char Msg2[10]; // Initial char array
    char* Msg3 = (char*)malloc(sizeof(char) * 10); // Preallocate pointer memory
    Foo(Msg1, Msg2, Msg3);
    printf("Msg1: %s\n",Msg1); // Method 1
    printf("Msg2: %s\n",Msg2); // Method 2
    printf("Msg3: %s\n",Msg3); // Method 3
    free(Msg1);    
    free(Msg3);
    return 0;
}

在上面的示例中,我列出了我知道的所有将char指针传递给函数的工作方法。我不明白的是方法1

char *(&Msg1)传递给函数的第一个参数的含义Foo什么?

同样,方法2method3似乎已被书籍和教程广泛介绍,其中有些甚至将那些方法称为传递数组/指针的最正确方法我不知道方法1对我来说看起来很好,尤其是当我编写API时,用户可以轻松地将null指针传递给函数而无需预先分配内存。如果用户忘记释放内存块(与方法3相同,则唯一的缺点可能是潜在的内存泄漏有什么理由让我们更喜欢使用方法2或3而不是方法3吗?

大卫·K

int f(char* p)是C中通常的方法,当它已经指向您需要的存储位置时(通常是因为方法2或方法3中已经分配了一个字符数组),就将指针传递p给该函数fp

int f(char** p)您希望能够为该函数的调用者修改指针C中将指针传递p给该函数的常用方法您的方法1就是一个例子。您想分配新的内存并用来告诉调用者该内存在哪里。ffpfp

int f(char*& p) 是C ++,而不是C。由于这是为您编译的,因此我们知道您正在使用C ++编译器。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将char数组的指针传递给函数

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将指针传递给char数组作为函数的参数-C

来自分类Dev

将char指针传递给C函数

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

将指向数组的指针传递给函数

来自分类Dev

将“指针数组”传递给函数

来自分类Dev

将指针数组传递给函数

来自分类Dev

将指针或数组传递给函数

来自分类Dev

将指针数组传递给函数

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

将指针数组传递给函数

来自分类Dev

无法将char数组传递给函数

来自分类Dev

将char数组传递给函数C ++

来自分类Dev

将char数组传递给函数

来自分类Dev

将字符串传递给接受char指针的函数

来自分类Dev

将char指针作为参数传递给函数

来自分类Dev

将字符串地址作为参数传递给指针,指针传递给char函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将char数组传递给函数内的struct数组

来自分类Dev

将数组传递给函数-指针与引用(C ++与C)

来自分类Dev

将字符指针数组传递给C函数

来自分类Dev

将整数传递给函数内的数组(无指针)