Sivan's blog

用代码说话……
posts - 14, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

     摘要: 看了《金山卫士代码批评》一文,发现了一些自己存在的问题。1.const使用1.1 const修饰参数1)参数为输出参数,不论什么数据类型,不论什么参数传递方式,都不加const。2)输入参数“指针传递”,加const防止改动指针。3)输入参数“值传递”,内置类型,参数不加const修饰,非内置类型,常使用引用传递,如果不想改变参数,加const修饰,...  阅读全文

posted @ 2010-12-06 22:17 Sivan 阅读(465) | 评论 (0)编辑 收藏

     摘要:   阅读全文

posted @ 2010-10-25 17:11 Sivan 阅读(2365) | 评论 (2)编辑 收藏

先看一个代码
 1#include "stdafx.h"
 2#include <iostream>
 3using namespace std;
 4
 5int main()
 6{
 7    char* pch = "aaa";
 8    pch[2= 'b';
 9    cout<<pch<<endl;
10    return 0;
11}
运行这几行代码,程序会崩溃。将指针pch指向“aaa”,而“aaa”是个字符串常量,后对pch[2]进行修改,赋值操作不合法,程序崩溃。
c++中内存分为5个区域:堆、栈、自由存储区、全局/静态存储区和常量存储区。
堆、栈不说啦,自由存储区与堆类似,不过使用malloc分配free释放,全局/静态存储区存储全局变量和static变量,常量存储区存放的是常量,不允许修改,“aaa”就存储在这个位置。
将代码改为如下情况:
char str[] = "aaa";
char* pch = str;
pch[
2= 'b';
cout
<<pch<<endl;
此时“aaa”为栈分配,是数组中的存储内容,所以可以修改。

posted @ 2010-09-24 16:15 Sivan 阅读(321) | 评论 (0)编辑 收藏

(1)隐藏
在模块内,被声明为静态的全局变量和函数只能被这一模块内的其他函数调用,所有未加static前缀的全局变量和函数都具有全局可见性。静态的全局变量和函数会对其他模块进行隐藏。
(2)保持变量内容的持久性
函数体内的static变量,在程序开始运行时就完成初始化,存储在程序静态数据区。函数在被调用的过程中,静态变量保持内容的持久性。
(3)默认初始化为0
静态变量和全局变量同时具备这一属性。在静态存储区,所有的字节默认值都是0x00。
http://tech.sina.com.cn/roll/2008-12-28/0933936834.shtml

posted @ 2010-09-22 20:47 Sivan 阅读(261) | 评论 (0)编辑 收藏

仅列出标题
共2页: 1 2