跃2.0 2018-08-23 09:51 采纳率: 40%
浏览 3113
已采纳

能不能通过修改指针的指向来修改指针所指向的变量的值

这里主要是指的是字符串指针
比如

 比如 char s1[]="hello"; s=s1; char *t="www",我想让s内容变成"hellowww" 可以通过直接使用指针指向来做么,不要string.h函数 不要循环赋值。就是想通过修改指针指向来做

这个可以实现么 不要函数不要循环复制 为什么不能让s+5=t,就是让它接下来指向t的地址呢

  • 写回答

6条回答 默认 最新

  • zhangbin-eos 2018-09-11 15:00
    关注

    如果s1和t这两个字符串在内存连续的话,那么s=s1,s+6==t是真,C的字符串需要额外的计算一个字符串结束符\0

    如果你的问题是是不是能够修改指针的值来修改指针指向的数据,这个是可以的,并且在C中也很常见,前提就是你得准确的知道你的源地址和目标地址的偏移,以及目标地址存储的数据类型,这样才能正确的提取出你要的数据

    比较经典的例子是linux kernel list.h中的宏

     #define container_of(ptr, type, member) ({ \
    
        const typeof(((type *)0)->member ) *__mptr = (ptr); \
    
        (type *)((char *)__mptr - ((size_t) &((type *)0)->member));})
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?