typedef用法注意事项

原创 2007年09月28日 15:33:00
 
  1. #include <iostream.h>
  2.  int main(void)
  3. {
  4.       int i = 20;
  5.       typedef int *myint;
  6.       const myint mintval = &i;
  7.       cout<<*mintval;
  8.       return 0;
  9. }//运行结果显示为 20

如果将typedef看成宏展开,即
        const myint mint ==► const int* mintval 
//mintval是指向const int的指针
那么也就说mintval指向的int对象的值是不能改变的。
修改代码如下验证这种假设:

    1. #include <iostream.h>
    2.  int main(void)
    3. {
    4.       int i = 20;
    5.       typedef int *myint;
    6.       const myint mintval = &i;
    7.       (*mintval)++;
    8.       cout<<*mintval;
    9.       return 0;
    10. }//运行结果显示为 21

这段代码不但编译通过,并且运行的结果也显示mintval所指向的int对象i被修改了。
这也就是说mintval的类型不是指向const int的指针。

实际上关于const myint mintval的含义应该这样看:
const修饰mintval的类型, 而mintval是一个指向int的指针,
所以const myint mintval表示mintval是指向int的const指针。

修改代码如下验证上述结论:

  1. #include <iostream.h>
  2.  int main(void)
  3. {
  4.       int i = 20;
  5.       int i2 = 30;
  6.       typedef int *myint;
  7.       const myint mintval = &i;
  8.       mintval = &i2;   //编译错误:error C2166: l-value specifies const object
  9.       cout<<*mintval;
  10.       return 0;
  11. }//无法运行

上述结果表明mintval是指向int的const指针的结论是正确的

 

相关文章推荐

matlab中fft的用法及注意事项

  • 2012年12月17日 09:14
  • 356KB
  • 下载

Block的基本使用、typedef给Block定义别名、Block的应用场景、Block的注意事项

什么是Block? Block是ios中一种比较特殊的数据类型,是苹果官方特别推荐使用的一种数据类型,应用场景有:动画、多线程、集合遍历、网络请求回调等 Block的作用:用来保存某一段代...

struct 和 typedef struct 的说明和注意事项。

struct和typedef struct 分三块来讲述:   一、首先://注意在C和C++里不同     在C中定义一个结构体类型要用typedef:     typedef struct Stu...

java中使用switch-case的用法及注意事项超全总结

今天陈红军老师在用到switch的时候,这种设计到最基本的内容,可能忘记它的一些基本语法,出现了一些错误,所以即兴从各种资料查询总结了下面的内容,希望可以帮助那些正在困扰switch错误和各种细节问题...

linq list select用法注意事项

下面是我自己做的一个例子

vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin()和vector.en...

vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.e...

memset()及相关函数用法及注意事项

memset()及相关函数用法及注意事项 1、memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。 其原型是:void* memset(void *_Dst, int _Val,...

jquery中load方法的用法及注意事项说明

调用load方法的完整格式是:load( url, [data], [callback] ),其中  url:是指要导入文件的地址。  data:可选参数;因为Load不仅仅可以导入静态的html...

Android Media Playback 中的MediaPlayer的用法及注意事项(一)

Android Media Playback 中的MediaPlayer的用法及注意事项 声明:以下内容翻译自Android官网,由于译者水平有限,本文出现的错误请大家批评指正,谢谢! 尊重劳动成果,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:typedef用法注意事项
举报原因:
原因补充:

(最多只允许输入30个字)