免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: txdgtwpv
打印 上一主题 下一主题

[C++] [低水平帖]定义和声明时,星号(*)是靠着类型还是靠着变量 [复制链接]

论坛徽章:
13
巨蟹座
日期:2013-10-30 18:29:4115-16赛季CBA联赛之青岛
日期:2019-01-04 17:30:1015-16赛季CBA联赛之天津
日期:2016-03-08 10:30:1715-16赛季CBA联赛之天津
日期:2015-12-10 15:56:452015年亚洲杯之约旦
日期:2015-03-09 16:29:36双鱼座
日期:2014-11-27 17:17:20寅虎
日期:2014-11-18 13:55:12双子座
日期:2014-03-31 15:41:32狮子座
日期:2014-03-14 11:23:24狮子座
日期:2014-02-19 16:30:12午马
日期:2013-11-04 23:22:31卯兔
日期:2013-10-30 19:51:15
21 [报告]
发表于 2011-08-26 10:15 |只看该作者
我喜欢第二种

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
22 [报告]
发表于 2011-08-26 10:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
23 [报告]
发表于 2011-08-26 11:20 |只看该作者
回复 22# pmerofc


    非要在一行定义两个指针么。凡定义指针分行写行不。何况,指针的使用哲学不是“定义时即正确地初始化”吗?

    int*  a;  // 这是个野指针。

    严格地说,要么:
    int* p = NULL;
    要么:
    int* p = (int*)malloc(100 * sizeof(int));

    语义上,“*”是修饰类型的。指针是复合类型,就是说,你不可能定义一个类型无关的指针。引用、数组也是一样的。《C++ Primer》里面特别指出的。
    * p; // 啊,这样是定义一个类型无关的指针吗?

    定义指针的时候,你必须指明,这个指针是什么类型的指针(或者说指向什么类型):
    int* p;

    别说:
    void* p;
    是类型无关的。void* 表示指针是"void"类型。

    所以说:
    TYPE*  p; // 这种方式明确地,区分了,变量,和类型。它表示:变量p是TYPE*类型。对于类属/泛型编程来说,类型和变量的区分很重要。类型是类型,对象是对象。
    而
    TYPE   *p; // 这表示什么呢?表示变量*p是TYPE类型? no,它的语义仍然是:变量p是TYPE*类型。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
24 [报告]
发表于 2011-08-26 11:41 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
25 [报告]
发表于 2011-08-26 11:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
26 [报告]
发表于 2011-08-26 11:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
27 [报告]
发表于 2011-08-26 12:06 |只看该作者
回复 26# pmerofc


    这种就没办法了... 哈哈。

    啊,要是按照类型修饰的说法,应该是这样写:

    int[3]* pary;   // 指向数组的指针。
    int*[] aryp;     // 指针数组

    可惜C没有这样的语法,呵呵

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
28 [报告]
发表于 2011-08-26 12:10 |只看该作者
回复 26# pmerofc


    比如C中声明数组非要这样写:
    int ary[];

    Java、C#之类的,都改成这种写法了(其目的也是在语法风格上强调类型和变量的分离):
    int[] ary;

论坛徽章:
0
29 [报告]
发表于 2011-08-26 12:13 |只看该作者
本帖最后由 三月廿七 于 2011-08-26 12:14 编辑
回复  pmerofc


    比如C中声明数组非要这样写:
    int ary[];

    Java、C#之类的,都改成这种 ...
captivated 发表于 2011-08-26 12:10

原来我自己的感觉就是权威...

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
30 [报告]
发表于 2011-08-26 12:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP