鱼C论坛

 找回密码
 立即注册
查看: 2108|回复: 12

关于 typedef 的问题

[复制链接]
发表于 2014-7-5 17:58:20 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 拈花小仙 于 2014-7-5 19:48 编辑

#include <iostream>
using namespace std;

typedef int*  ptypedef;

int main()
{
    int i = 3;
    int j = 5;
    const ptypedef p1 = &i;      //  这句等价于 int *  const p1;  
    const int *    p2;                   //  这句是       const int *  p2;
    return 0;
}

最佳答案

查看完整内容

原来你是想问这个啊 好吧咱语文不太好 这是语法规定 记住就好 我一直以为你想知道 int const * p ; int * const p ; const int * p 直接的区别 我先入为主了 应为去年我纠结过这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 17:58:21 | 显示全部楼层
拈花小仙 发表于 2014-7-5 19:09
ptypedef 是 (typedef int* )  
                |
                |

原来你是想问这个啊 好吧咱语文不太好
这是语法规定
记住就好
我一直以为你想知道  int const * p ; int * const p ; const int * p 直接的区别
我先入为主了 应为去年我纠结过这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 18:38:31 | 显示全部楼层
本帖最后由 牡丹花下死做鬼 于 2014-7-5 18:53 编辑

考虑不周 请无视
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-5 18:44:49 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-7-5 18:38
C++  ←_←   我已C的方式来考虑了小貌似是一样的啊
typedef int*  ptypedef;
#define pdefine int*

可能我编辑的不好,修改了下,帮我在看看{:7_181:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 18:52:35 | 显示全部楼层
const int *  p2; == int const * p2;  const针对的是int*
typedef int*  ptypedef; 是对int* 起绰号
也就是说 const ptypedef    const针对的是int*锁指向的内容
懂吗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 18:54:37 | 显示全部楼层
int const * p2 是p2不能指向其他地址
int * const p2是p2指向的内容不能变
这玩意还真行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-5 19:09:13 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-7-5 18:54
int const * p2 是p2不能指向其他地址
int * const p2是p2指向的内容不能变
这玩意还真行

ptypedef 是 (typedef int* )  
                |
                |
const int* p1 = &i;            为什么和下面这句不等价,而是等价于 int* const p1;
                                          



点评

原来你是想问这个啊 好吧咱语文不太好 这是语法规定 记住就好 我一直以为你想知道 int const * p ; int * const p ; const int * p 直接的区别 我先入为主了 应为去年我纠结过这个  详情 回复 发表于 2014-7-5 19:17
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-5 19:20:37 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-7-5 17:58
原来你是想问这个啊 好吧咱语文不太好
这是语法规定
记住就好

是小仙表达的不清,这个很难表达,那好吧,语法规定的还真没办法。

点评

那次 我没看甲鱼视屏吗 我还一直纠结 #define 和 typedef 到底有什么区别 讲课的老师只说了这两个有区别 艹  详情 回复 发表于 2014-7-5 19:24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 19:24:01 | 显示全部楼层
拈花小仙 发表于 2014-7-5 19:20
是小仙表达的不清,这个很难表达,那好吧,语法规定的还真没办法。

那次 我没看甲鱼视屏吗  
我还一直纠结
#define 和 typedef 到底有什么区别 讲课的老师只说了这两个有区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-5 19:26:04 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-7-5 19:24
那次 我没看甲鱼视屏吗  
我还一直纠结
#define 和 typedef 到底有什么区别 讲课的老师只说了这两个有 ...

这两个好难学呀,变化多端,有时找不到逻辑性,就像这题,都不知为什么,网上也查不到,很多类似的,全是这两个的问题。

点评

这个问题网上告诉你区别的有 当时我就是这样才弄懂的  详情 回复 发表于 2014-7-5 19:30
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 19:30:42 | 显示全部楼层
拈花小仙 发表于 2014-7-5 19:26
这两个好难学呀,变化多端,有时找不到逻辑性,就像这题,都不知为什么,网上也查不到,很多类似的,全是 ...

这个问题网上告诉你区别的有 当时我就是这样才弄懂的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-5 19:33:30 | 显示全部楼层
哦,这些问题还真难解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 20:38:15 | 显示全部楼层
本帖最后由 santaclaus 于 2014-7-5 20:40 编辑

这个问题也不难,两种理解方法:
方法1:因为const 可写在类型前也可以写在类型后,如const ptypedef p和 ptypedef const p都是合法的。一般人都将const写前面,这会给typedef 与const结合时,理解上带来很大的困难,所以当typedef时我建议将const写在类型后面。因此,当写在后面时(ptypedef const p),相当于直接替换,即,int* const p,即const修饰的是p本身。

方法2:const int i,应该很清楚吧,const就是修饰i变量。所以,可以先不管ptypedef实际的类型按之前的理解,const ptypedef p,const就是修饰p的,即int* const p。

评分

参与人数 1鱼币 +2 收起 理由
拈花小仙 + 2 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 14:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表