很基础的指针问题

youyunsoft 2010-02-21 10:20:45
如果 我有
LOGFONT myfont;
还有 LOGFONT* myfont1;
那么我怎么让 myfont得到 myfont1的值?
谢谢
...全文
115 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
青稞 2010-02-21
  • 打赏
  • 举报
回复
WizardK说的很有道理。。顶起。。
WizardK 2010-02-21
  • 打赏
  • 举报
回复
引用 5 楼 wizardk 的回复:
以上所罗列的两个方法都没有考虑结构体内元素是指针的情况,严格上说应该再额外赋过去。但是这也不一定是问题,因为仅仅是赋值,指针值赋值过去了,只要原始(SRC)端不是一个生存期比目的(DST)端短的,就不会发生赋值后指针无效的情况。


但是不建议这么做,容易产生混乱,除非涉及的代码范围很小
WizardK 2010-02-21
  • 打赏
  • 举报
回复
以上所罗列的两个方法都没有考虑结构体内元素是指针的情况,严格上说应该再额外赋过去。但是这也不一定是问题,因为仅仅是赋值,指针值赋值过去了,只要原始(SRC)端不是一个生存期比目的(DST)端短的,就不会发生赋值后指针无效的情况。
Allen_zhang 2010-02-21
  • 打赏
  • 举报
回复
1、直接拷贝赋值。像1楼说的,建议使用这个
2、指针赋值,指针赋值的话可能会出现问题,如果你原来的值是临时变量的话
fandh 2010-02-21
  • 打赏
  • 举报
回复
引用 1 楼 jingzhongrong 的回复:
memcpy(&myfont,myfont1,sizeof(LOGFONT));

也可以直接等于myfont = *myfont1,因为这个结构体里面没有指针,如果有指针,就要注意结构体里面指针的拷贝!
WizardK 2010-02-21
  • 打赏
  • 举报
回复
memcpy可以,也可myfont = *myfont1
jingzhongrong 2010-02-21
  • 打赏
  • 举报
回复
memcpy(&myfont,myfont1,sizeof(LOGFONT));
西山小月 2010-02-21
  • 打赏
  • 举报
回复
恩,深拷贝和浅拷贝的区别
magic7004 2010-02-21
  • 打赏
  • 举报
回复
引用 5 楼 wizardk 的回复:
以上所罗列的两个方法都没有考虑结构体内元素是指针的情况,严格上说应该再额外赋过去。但是这也不一定是问题,因为仅仅是赋值,指针值赋值过去了,只要原始(SRC)端不是一个生存期比目的(DST)端短的,就不会发生赋值后指针无效的情况。


LOGFONT结构体内的元素是没有指针滴~~
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
引用 5 楼 wizardk 的回复:
以上所罗列的两个方法都没有考虑结构体内元素是指针的情况,严格上说应该再额外赋过去。



每一项都单独赋值才保险。
zyyoung 2010-02-21
  • 打赏
  • 举报
回复
赋值 ,要注意深度拷贝 和 浅拷贝
youyunsoft 2010-02-21
  • 打赏
  • 举报
回复
谢谢大家啦
谢谢各位

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧