1

我有一个接收指向字符串的指针的函数。现在我想复制这个指针,所以我可以用一个指针在字符串上运行,并用另一个指针保存字符串的开头。我希望我的问题很清楚,我不想创建一个指向指针的指针(它指向第一个指针指向的位置并随之改变),我想要一个指向第一个指针指向的地址的指针.

我尝试了许多不同的方法,但都没有奏效,这是我最近的尝试,我不断收到“初始化从整数生成指针而不进行强制转换”

int move_chars (char *str, int start, int end, int dist){
    int strsize = end - start + 1;
    char *p =  *str;
4

3 回答 3

7

由于pis 是 typechar *并且str也是 type char *,你只需要这样做:

char *p = str;

p指向与str.

你的代码:

char *p = *str;

尝试在指向的内存位置复制到pfirst 的值,并且由于期望另一个内存位置而不是 a ,因此会出现错误。charstrpchar

您的错误说“初始化使指针从整数而不进行强制转换”。这告诉你发生了什么:编译器认为你手动指向p一个特定的内存位置,使用char *str返回的值作为一个整数。这在技术上是可行的,但是您需要手动将整数转换为指针,这样很明显您正在做您想做的事情,而且这不是您的情况下的错误。

于 2013-01-18T15:24:15.070 回答
5

采用

char *p =  str;

声明一个指向 char 的指针并用另一个 char 指针的值对其进行初始化。

于 2013-01-18T15:24:07.803 回答
1
char *p = str

这将声明一个指向字符的指针并使p指向str指向的内存位置

于 2013-01-18T15:43:14.597 回答