指针的陷阱

你也许感觉对指针已经了如指掌了, 但是也可能还没注意到下面所述的一些简单的问题. 当然, 如果已经注意到这些陷阱了, 那就最好不过了.
    大家应该都知道, 通过指针是可以修改其指向的对象的值的, 请看下面的情况:
            int i = 10;
            int *p = &i;
            int *q = NULL;
            q = p;
            *q = 7;
            cout << i << endl;            // i == 7;
     
    以上是普通的情况. 那么请接着看下面的内容:
            char *p = NULL;
            char *q = NULL;
            
            p = "hello, c++ \n";
            q = p;
            
            q[1] = ‘E‘;                        // q所指向的内存现在存储的是字符串"hEllo, c++ \n"
            
   
        需要各位注意的是, 某些c编译器允许这种修改行为, 但ANSI C标准禁止对字符串子面值进行修改.

时间: 2024-10-08 10:28:50

指针的陷阱的相关文章

C语言指针的陷阱

C语言指针的陷阱   分类: C/Cpp 转自:http://blog.csdn.net/porscheyin/article/details/3461670 "C语言诡异离奇,陷阱重重,却获得了巨大成功!"--C语言之父Dennis M.Ritchie.Ritchie大师的这句话体现了C语言的灵活性以及广泛的使用,但也揭示了C是一种在应用时要时刻注意自己行为的语言.C的设计哲学还是那句话:使用C的程序员应该知道自己在干什么.有时用C写的程序会出一些莫名其妙的错误,看似根源难寻,但仔细

智能指针的使用与陷阱

在包含指针的类中需要注意复制控制,复制指针时只复制指针中的地址,不会复制指针指向的对象. 大多数c++类采用三种方法管理指针成员: 1)指针成员采用常规指针型行为. 2)采用智能指针 3)采取值型行为 常规指针缺陷:可能会出现悬垂指针.当一个指针复制到另一个指针,两个指针指向同一个对象,当一个指针删除对象时,另一个指针不知道,所以出现悬垂指针.即使使用默认合成复制构造函数也会出现,类本身无法避免. 智能指针:加入了引用计数.引用计数跟踪该类有多少对象共享同一指针.当引用计数为0 时,删除对象.创

c++ primer笔记------智能指针

智能指针的陷阱 基本规范: 1.不使用相同的内置指针值初始化(或reset)多个智能指针.  double free 2.不delete get() 返回的指针.  double free 3.不使用get() 初始化或reset另一个智能指针.  double free 4.如果你使用get() 返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就变为无效了.   空悬指针 5.如果你使用智能指针管理的资源不是new分配的内存,记住传递给它一个删除器.    非new类型指针需要自己指定

web前端工程师必备技能汇总

web前端知识结构图. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个github项目.我们可以通过协作的方式来共同维护这个项目.Git的历史记录也可以见证前端行业的一些变迁. 尽管会变成文字的方式来维护这些内容,但是我承诺写一个小工具帮大家生成更好玩的图形(基于DataV项目). 前端开发知识结构 前端工程师 SVG/Canvas/VML SVG: D3/Raphaël/Snap.svg/DataV Canvas: Cre

前端技能汇总 Frontend Knowledge Structure

Frontend Knowledge Structure 项目起源 还记得@jayli 的这幅前端知识结构图么. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以通过协作的方式来共同维护这个项目.Git的历史记录也可以见证前端行业的一些变迁. 尽管会变成文字的方式来维护这些内容,但是我承诺写一个小工具帮大家生成更好玩的图形(基于DataV项目). 前端开发知识结构 前端工程师 浏览器 IE6/7/8/

Linux好书、经典书籍推荐

Linux好书.经典书籍推荐 思想篇 <Linux/Unix设计思想> 图书将Unix与Linux的原理有效地结合起来,总结了Unix/Linux软件开发中的原则.在保留了第1版中Unix方面的内容的同时,强调了Linux和开源领域的新思想. 入门篇 <Linux程序设计(第4版)> <Linux程序设计>是Linux程序设计领域的经典名著,以简单易懂.内容全面和示例丰富而受到广泛好评.中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮一直

Web前端知识技能大汇总

Web前端知识技能大汇总 来源:github 发布时间:2015-07-08 阅读次数:3432 28 项目起源 还记得@jayli 的这幅前端知识结构图么. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以通过协作的方式来共同维护这个项目.Git的历史记录也可以见证前端行业的一些变迁. 可视化效果 前端开发知识结构 前端工程师 浏览器 IE6/7/8/9/10/11 (Trident) Firefo

全端project师必备技能汇总

首先,看一张前端知识结构图:  (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们.无法为此图贡献些什么,随着时间的迁移,也许有些技术点会发生改变.所以有了这个GitHub项目.我们能够通过协作的方式来共同维护这个项目.Git的历史记录也能够见证前端行业的一些变迁. 虽然会变成文字的方式来维护这些内容.可是我承诺写一个小工具帮大家生成更好玩的图形(基于DataV项目). 前端开发知识结构 前端project师 浏览器 IE6/7/8/9/10/11 (Trident) Fire

前端工程师必备技能汇总

首先,看一张前端知识结构图:  (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以通过协作的方式来共同维护这个项目.Git的历史记录也可以见证前端行业的一些变迁. 尽管会变成文字的方式来维护这些内容,但是我承诺写一个小工具帮大家生成更好玩的图形(基于DataV项目). 前端开发知识结构 前端工程师 浏览器 IE6/7/8/9/10/11 (Trident) Firefox (