指针** char的指针问题

时间:2010-10-13 13:03:09

标签: c pointers char

我有一个

char** color;

我需要复制

的值
*color;

因为我需要将*颜色传递给一个函数但是该值将被修改,我不能修改原始值。

你会怎么做?

整个代码看起来像这样

Function1(char** color)
{
  Function2(char * color);
  return;
}

我必须提到函数1和2中的指针用作返回值。

3 个答案:

答案 0 :(得分:1)

版本1

functionTwo( const char* color )
{
   //do what u want
}

functionOne( char** color )
{
    functionTwo( *color );
}

或第二版

functionTwo( const char* color )
{
   //do what u want
}

functionOne( char** color )
{
    char* cpMyPrecious = strdup( *color );

    functionTwo( cpMyPrecious );

    free( cpMyPreciuos );
}

HTH

马里奥

答案 1 :(得分:0)

我建议使用strncpy()来复制值。你指向的字符串只在内存中一次,而另一个指向它的指针并不能解决你的问题。

答案 2 :(得分:0)

假设您没有strdup()可用(它不是标准库的一部分),您可以这样做:

#include <stdlib.h>
#include <string.h>
...
void function1(char **color)
{
  char *colorDup = malloc(strlen(*color) + 1);
  if (colorDup)
  {
    strcpy(colorDup, *color);
    function2(colorDup);
    /* 
    ** do other stuff with now-modified colorDup here
    */
    free(colorDup);
  }
}