使用另一个指针C指向地址的指针

时间:2013-01-18 15:22:59

标签: c

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

我尝试了许多不同的方法,但没有一个工作,这是我最近的尝试,我一直在努力 “初始化使得指针来自整数而没有强制转换”

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

3 个答案:

答案 0 :(得分:7)

由于p的类型为char *str的类型为char *,因此您只需执行以下操作:

char *p = str;

使p指向与str相同的内存位置。

您的代码:

char *p = *str;

尝试在p指向的内存位置复制charstr个值,并且p期待另一个内存位置,而不是char,您收到错误。

你的错误说“初始化使得指针来自整数而没有强制转换”。这告诉您发生了什么:编译器认为您手动将p指向特定的内存位置,使用char *str返回的值作为整数。这在技术上是可行的,但是您需要手动将整数转换为指针,这样就可以清楚地表明您正在按照预期进行操作,并且这不是像您的情况那样的错误。

答案 1 :(得分:5)

使用

char *p =  str;

声明一个指向char的指针,并用另一个char指针的值初始化它。

答案 2 :(得分:1)

char *p = str

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