关于字符串指针的问题
程序代码:
char* str="tom is a cat"; char* chk; char** point; chk=str; point = &str; str = str+3; printf("%s\n",str); printf("%s\n",chk); printf("%s\n",*point);
输出:
_is a cat
tom is a cat
_is a cat
(_是空格)
_is a cat
tom is a cat
_is a cat
(_是空格)
首先是我的一些见解,不知正确与否:
首先将一个指针赋值给另外一个指针(chk=str),这两个指针(chk,str)指向同一个内存地址。
之后一个指针(str)的位置变化并不会影响另外一个指针(chk),被赋值的指针(chk)还是在原来的位置。
之后,对于指针的指针(**point)会跟着str 的变化而变化,所以输出和str一样。
然后我想问的问题是:
如果我想把某个字符串的中间N个字符删除然后输出,用指针应该怎么实现
我起先的考虑是str=str+N,但是由于是中间的字符被删除,在删除之前的字符就没有办法找回来了,这应该怎么处理呢?
例如:
char* str ="tom is a male cat";
而我想把male 删除,然后把删除后的str输出,应该怎么做,跪谢各位大神!