我有一个接收指向字符串的指针的函数。 现在我想复制这个指针,所以我可以用一个指针运行字符串,并有另一个指针保存字符串的开头。我希望我的问题很明确,我不想创建一个指向指针的指针(指向第一个指针指向的地方并随之改变),我想要一个指向第一个指针所指向的地址的指针
我尝试了许多不同的方法,但没有一个工作,这是我最近的尝试,我一直在努力 “初始化使得指针来自整数而没有强制转换”
int move_chars (char *str, int start, int end, int dist){
int strsize = end - start + 1;
char *p = *str;
答案 0 :(得分:7)
由于p
的类型为char *
且str
的类型为char *
,因此您只需执行以下操作:
char *p = str;
使p
指向与str
相同的内存位置。
您的代码:
char *p = *str;
尝试在p
指向的内存位置复制char
第str
个值,并且p
期待另一个内存位置,而不是char
,您收到错误。
你的错误说“初始化使得指针来自整数而没有强制转换”。这告诉您发生了什么:编译器认为您手动将p
指向特定的内存位置,使用char
*str
返回的值作为整数。这在技术上是可行的,但是您需要手动将整数转换为指针,这样就可以清楚地表明您正在按照预期进行操作,并且这不是像您的情况那样的错误。
答案 1 :(得分:5)
使用
char *p = str;
声明一个指向char的指针,并用另一个char指针的值初始化它。
答案 2 :(得分:1)
char *p = str
这将声明一个指向字符的指针,并使 p 指向 str 指向的内存位置