网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C/C++ > 正文
C/C++编程新手错误分析
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
 数组名指代一种数据结构,这种数据结构就是数组;

例如:

char str;

char *pStr = str;

cout << sizeof(str) << endl;

cout << sizeof(pStr) << endl;

输出结果为:

 10

4

这说明数组名str指代数据结构char。

规则2 数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;

char str;

char *pStr = str;

str++; //编译出错,提示str不是左值 

pStr++; //编译正确

规则3 指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址;

规则4 数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;很遗憾,在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

例如:

void arrayTest(char str)

{

cout << sizeof(str) << endl; //输出指针长度

  str++; //编译正确

}

int main(int argc, char* argv)

{

 char str1 = "I Love U";

 arrayTest(str1);

return 0;

}

(5)“整形变量为32位”

整形变量是不是32位这个问题不仅与具体的CPU架构有关,而且与编译器有关。在嵌入式系统的编程中,一般整数的位数等于CPU字长,常用的嵌入式CPU芯片的字长为8、16、32,因而整形变量的长度可能是8、16、32。在未来64位平台下,整形变量的长度可达到64位。

长整形变量的长度一般为CPU字长的2倍。

在数据结构的设计中,优秀的程序员并不会这样定义数据结构(假设为WIN32平台):

typedef struct tagTypeExample

{

unsigned short x;

unsigned int y;

}TypeExample;

他们这样定义:

#define unsigned short UINT16 //16位无符号整数

#define unsigned int UINT32 //32位无符号整数

typedef struct tagTypeExample

{

UINT16 x;

UINT32 y;

}TypeExample;

这样定义的数据结构非常具有通用性,如果上述32平台上的数据发送到16位平台上接收,在16位平台上仅仅需要修改UINT16、UINT32的定义:

#define unsigned int UINT16 //16位无符号整数

#define unsigned long UINT32 //32位无符号整数

几乎所有的优秀软件设计文档都是这样定义数据结构的。

(6)“switch和if …else…可随意替换”

switch语句和一堆if…else…的组合虽然功能上完全一样,但是给读者的感受完全不一样。if…else…的感觉是进行条件判断,对特例进行特别处理,在逻辑上是“特殊与一般”的关系,而switch给人的感觉是多个条件的关系是并列的,事物之间不存在特殊与一般的关系,完全“对等”。

譬如:

//分别对1-10的数字进行不同的处理,用switch

switch(num)

{

case 1:

case 2:

}

//对1-10之间的数字进行特殊处理,用if

if(num < 10 && num > 1)

{

}

else

{

}

许多时候,虽然不同的代码可实现完全相同的功能,但是给读者的感觉是完全不同的。譬如无条件循环:

while(1)

{

}

有的程序员这样写:

for(;;)

{

}

这个语法没有确切表达代码的含义,我们从for(;;)看不出什么,只有弄明白for(;;)在C/C++语言中意味着无条件循环才明白其意。而不懂C/C++语言的读者看到while(1)也可猜到这是一个无条件循环。

(7)“免得麻烦,把类里面的成员函数都搞成public算了”

许多人编C++程序的时候,都碰到这样的情况,先前把某个成员函数定义成类的private/protected函数,后来发现又要从外面调用这个函数,就轻易地将成员函数改为public类型的。甚至许多程序员为了避免访问的麻烦,干脆把自己添加的成员函数和成员变量都定义成public类型。

殊不知,这是一种规划的失败。在类的设计阶段,我们就要很清晰地知道,这个类的成员函数中哪些是这个类的接口,哪

  • 上一篇资讯: C语言编程易犯毛病集合
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号