c语言,关于指针内数据的移动?
你不能这么做。buf+11的确是buf[11]的地址,这没错,但因为buf是数组buf[1024]的起始地址,这是一个常量,buf不能更改,你不能给它赋值,即:你不能直接buf = buf+11;
公司主营业务:网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出扶风免费做网站回馈大家。
有更好的办法就是内存复制。你可以使用memmove函数,它包含在string.h头文件中,其定义原型如下:
void *memmove( void* dest, const void* src,size_tcount );
它的作用是由src所指内存区域复制count个字节到dest所指内存区域。具体到你的需求,这个函数应该这样调用:
memmove(buf, buf + 11, 1024 - 11);
其中,1024 - 11指的是从第11个元素开始到第1024个元素结束,这之间一共有1024 - 11个元素,由于是char型的,每个元素占1个字节,所以就是1024 - 11个字节。
这样调用的目的就是把 buf[11]开始之后的数据往前移到buf[0]开始的位置,这要比用for循环一个字节一个字节地移动要高效得多。
在c语言中,可以通过哪三种运算来移动指针
对指针变量加一个整型常量 , 指针赋值 , 对指针变量减去一个整型常量
c语言指针移动问题
backward++;
forward--;
用物理的角度看,限定其中一个为
参照物
,那么另一个的速度就是2。
擦肩而过
你懂的
吧.....
每次加2可能跳过了你的那个相等的机会。
backward
=
forward
比较可靠。
分享标题:c语言指针针函数移动数,c语言指针的偏移
网址分享:http://scgulin.cn/article/hodjic.html