关于 typedef 的问题
本帖最后由 拈花小仙 于 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;
}
C++编程小组 拈花小仙 发表于 2014-7-5 19:09
ptypedef 是 (typedef int* )
|
|
原来你是想问这个啊 好吧咱语文不太好
这是语法规定
记住就好
我一直以为你想知道int const * p ; int * const p ; const int * p 直接的区别
我先入为主了 应为去年我纠结过这个 本帖最后由 牡丹花下死做鬼 于 2014-7-5 18:53 编辑
考虑不周 请无视 牡丹花下死做鬼 发表于 2014-7-5 18:38
C++←_← 我已C的方式来考虑了小貌似是一样的啊
typedef int*ptypedef;
#define pdefine int*
可能我编辑的不好,修改了下,帮我在看看{:7_181:} const int *p2; == int const * p2;const针对的是int*
typedef int*ptypedef; 是对int* 起绰号
也就是说 const ptypedef const针对的是int*锁指向的内容
懂吗
int const * p2 是p2不能指向其他地址
int * const p2是p2指向的内容不能变
这玩意还真行 牡丹花下死做鬼 发表于 2014-7-5 18:54
int const * p2 是p2不能指向其他地址
int * const p2是p2指向的内容不能变
这玩意还真行
ptypedef 是 (typedef int* )
|
|
const int* p1 = &i; 为什么和下面这句不等价,而是等价于 int* const p1;
牡丹花下死做鬼 发表于 2014-7-5 17:58
原来你是想问这个啊 好吧咱语文不太好
这是语法规定
记住就好
是小仙表达的不清,这个很难表达,那好吧,语法规定的还真没办法。 拈花小仙 发表于 2014-7-5 19:20
是小仙表达的不清,这个很难表达,那好吧,语法规定的还真没办法。
那次 我没看甲鱼视屏吗
我还一直纠结
#define 和 typedef 到底有什么区别 讲课的老师只说了这两个有区别
艹 牡丹花下死做鬼 发表于 2014-7-5 19:24
那次 我没看甲鱼视屏吗
我还一直纠结
#define 和 typedef 到底有什么区别 讲课的老师只说了这两个有 ...
这两个好难学呀,变化多端,有时找不到逻辑性,就像这题,都不知为什么,网上也查不到,很多类似的,全是这两个的问题。 拈花小仙 发表于 2014-7-5 19:26
这两个好难学呀,变化多端,有时找不到逻辑性,就像这题,都不知为什么,网上也查不到,很多类似的,全是 ...
这个问题网上告诉你区别的有 当时我就是这样才弄懂的 哦,这些问题还真难解决 本帖最后由 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]