我知道一个作用:指针的指针可以用来在函数中改变作为参数的指针的值。比如说:
void func(char **ptr)
{
*ptr = NULL;
}
int main() {
char a = 'a';
char *ptr = &a;
func(&ptr);
}
这样就把ptr的值更改了。
但如果单纯地
void func(char *ptr)
只能改变指针指向的内容
int
FastPar_getOptionChar_i(const char* argStr_z,
const char* optionName_z,
char** parameterSave_pc)
{
char* result_az = (char*) argStr_z;
char* parameter_pc = NULL;
char* tempString_pc = NULL;
int charCounter_i = 0;
/* Loop until the exact option name is found. */
while (TRUE)
{
result_az = strstr(result_az, optionName_z);
if (result_az == NULL)
return 1; /* option is not found */
/* Check if the option name is exact the same. */
charCounter_i = 0;
while ((*result_az != SPACE) && (*result_az != ENDOFDATA))
{
charCounter_i++;
result_az++;
}
if (charCounter_i == strlen(optionName_z))
{
result_az--; /* Set back the pointer one step
so it points on a character. */
break;
}
}
/* set the pointer right after the parameter if possible */
if ((result_az = strchr(result_az, SPACE)) == NULL)
return 1; /* no space after option means that no parameter exists */
/* Remove all spaces after the parameter to find the value */
while (*result_az == SPACE)
{
result_az++;
}
tempString_pc = result_az;
charCounter_i = 0;
while ((*tempString_pc != SPACE) && (*tempString_pc != ENDOFDATA))
{
tempString_pc++;
charCounter_i++;
}
parameter_pc = (char *)alloc((sizeof(char) * (charCounter_i+1)), 0);
*parameterSave_pc = parameter_pc;
tempString_pc = result_az;
while ((*tempString_pc != SPACE) && (*tempString_pc != ENDOFDATA))
{
*parameter_pc = *tempString_pc;
parameter_pc++;
tempString_pc++;
}
*parameter_pc = ENDOFDATA;
return 0;
}