找回密码
 立即注册
收起左侧

QString是不是不能做指针用?

6
回复
7507
查看
[复制链接]
累计签到:49 天
连续签到:1 天
来源: 2015-7-21 11:35:00 显示全部楼层 |阅读模式
1Qter豆
  1. Widget::Widget(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::Widget)
  4. {
  5.     m_str = "aaaaa";
  6.     QString pStr;
  7.     getStr(&pStr);
  8.     qDebug() << pStr;
  9. }

  10. void Widget::getStr(QString *str)
  11. {
  12.     qDebug() << &m_str;
  13.     str = &m_str;
  14.     qDebug() << str;
  15. }
复制代码
为什么不能这样用?

最佳答案

查看完整内容

额 我来回答 首先 QString str; //表示创建一个变量str 是QString类型的 QString *str; //表示创建一个指向QString类型的指针变量 如果没猜错,你程序里的m_str应该是类的成员变量, 那么再一步步分析
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2015-7-21 11:35:01 显示全部楼层
额  我来回答
首先 QString str;  //表示创建一个变量str  是QString类型的
       QString *str; //表示创建一个指向QString类型的指针变量

如果没猜错,你程序里的m_str应该是类的成员变量,
那么再一步步分析
  1. void Widget::getStr(QString *str)
  2. {
  3.     qDebug() << &m_str;      //打印出的是m_str变量的地址
  4.     str = &m_str;                 //你把str指向m_str的地址
  5.     qDebug() << str;          //打印的还是地址
  6. }
复制代码
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-22 08:53:10 显示全部楼层
m_str 这个变量是什么类型的?
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-7-22 09:48:14 显示全部楼层
qq1043068972 发表于 2015-7-22 08:53
m_str 这个变量是什么类型的?

QString类型QString类型QString类型
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-7-22 13:17:21 显示全部楼层
到底是为什么呢?到底是为什么呢?
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2015-7-22 14:16:22 显示全部楼层
构造函数不变,你把成员函数改成下面这样:
  1. void Widget::getStr(QString *str)
  2. {
  3.     qDebug() << m_str;      
  4.     *str = m_str;                 
  5.     qDebug() << *str;         
  6. }
复制代码
建议你好好看书,再用指针吧
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-7-23 09:47:50 显示全部楼层
shasidaran 发表于 2015-7-22 14:16
构造函数不变,你把成员函数改成下面这样:建议你好好看书,再用指针吧

明白了,和指针没关系,是函数值传递的特性,谢谢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了