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

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

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

 比如 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条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题