将指针传递给功能的问题

时间:2018-09-11 20:25:17

标签: c pointers function-pointers pointer-arithmetic

我正在尝试编写一些带有两个命令行参数(一个单词和一个字母)的东西,并从单词中删除该字母的所有实例。例如,如果我传递Hello和e,则Hllo应该是结果字符串。

我正在尝试使用指针来做到这一点,并减少不必要的局部变量以提高效率。编译时,我收到明显的不兼容警告,并且我知道它与我的指针有关。如果我使用局部变量并将其传递,那么一切都会完美无缺-因此,我对指针的理解显然是有缺陷的。

任何指针(无双关语)将不胜感激!

decimal.Decimal

编辑:将float添加到我的数据类型后,我收到以下警告:

tuple

编辑:这是警告

int

1 个答案:

答案 0 :(得分:0)

您的函数接受类型为char*的参数,但是局部变量char charTest2 = *argv[2]; char strTest = *argv[1]的类型为char。类型为char的变量可以容纳一个字符,然后您的变量将容纳相应的argv的首字母。相反,char *是指向内存中字符的指针。它通常指向字符序列的第一个,然后被视为“字符串”;序列(即字符串)以字符串终止字符'\0'结尾,即0值。

首先,将它们更改为char*;第二:我避免直接​​更改argv中的字符串,而是进行复制:

char *strTest = strdup(argv[1]); 
char *charTest2 = argv[2]; // will not be changed; no copy necessary

如果strdup不可用,您可以输入:

char *strTest = malloc(strlen(argv[1])+1);
strcpy(strTest,argv[1]);

您需要更改

    pw += (*pw != c);

进入

    pw += (*pw != *c);