C++经常容易出错的问题,整理

首先推荐几本书:effective c++ 、thinking in C++ ,inside the C++ model .C专家编程

1,sizeof的用法,这个貌似老生常谈,但是还是有很多人每天都错;g

  a ,基本用法比如问你sizeof(char*) sizeof(char) sizeof(void*) sizeof(void) sizeof(int) sizeof(long)。。。这些每个都需要注意

  b,sizeof 对于数组和字符串之间的用法  char a[]="helloworld"; sizeof(a)是多少,strlen(a之间差别有多大;

  c,在函数中调用sizeof(array)用法;


这个很多人会犯错,其中错误最厉害的就是:sizeof(char*) sizeof(int *)sizeof(void*) ,三者都是4(32位机器);

 其次就是sizeof(array(char))和strlen(array) 然后就是sizeof(int) sizeof(long);

2,数组和指针之间的区别是什么?

http://blog.sina.com.cn/s/blog_65a9944d0100v29b.html;

http://topic.youkuaiyun.com/u/20091123/11/0c03d2e2-0655-4634-8287-0e2315d889fc.html?52608

3,   if else语句和switch之间的是什么关系?

本质上来说,这两者是不同的,不要自以为以为switch就是ifelse的转化版,或者怎么样

http://blog.youkuaiyun.com/starsxingxing/article/details/6921533

4,map.containKey() 和map.containValue()复杂度各是多少?

如果这个闹不准,重新学习map

5,static在类中起到的作用是什么?const 和static在类中之间是很么关系?

共享数据、共享功能接口,隐蔽特性;static成员函数,static成员变量及初始化;

6,staitc全部变量和全局变量之间是什么关系?

隐藏特性、初始化特点、全局static和局部static重名冲突问题;

http://blog.youkuaiyun.com/zzhays/article/details/8013019

7,关于类对象

class A{}   sizeof(A)=?

class B:public A{} sizeof(B)=?

...此系列的判断

8.怎样正确使用if语句?

选自:高质量编程林博士:http://man.chinaunix.net/develop/c&c++/c/c.htm#_Toc520634014

9,if(NULL==p)   和 if(p==NULL)之间差别多大?

有人说,实践证明没多大效果,不纠结只因为规范性。但是对于程序的理解差别在此;

10,char * GetValue()

{

   char *tem=new char[10];

   memcpy(tem,"hello world",sizeof());

   return tem;

}

int main()

{

char * p=GetValue();

cout<<p<<endl;

delete p;

return 0;

}

此程序会出现什么问题?

11,    int * arrayNew=new int (length);

         int * arrayNew=new int[length];之间差别;

        分别在g++和vc上差别呢?

12,size_t & size_type的区别

使用场合、正确大小、表示含义、多类型运算类型转换等

string.h   vector.h  tchar.h  cstdef.h  string::size_type vector<int>size_type 

http://blog.youkuaiyun.com/zzhays/article/details/8036091

13,_T()了解多少?

http://blog.youkuaiyun.com/zzhays/article/details/8036073

14,typedef 用法细节?

http://blog.youkuaiyun.com/zzhays/article/details/8017070

15,const用法

http://blog.youkuaiyun.com/zzhays/article/details/8015767

16.类初始化列表

17,位域详细

http://blog.youkuaiyun.com/zzhays/article/details/8012613

18,类型转化符

19,new delete用法规范;

   这个能牵扯出很多的问题;


<think>嗯,用户想要一个C++的快速入门和知识点整理。首先,我需要确定用户的需求是什么。可能他刚开始学习编程,或者有其他语言经验想转C++。不管怎样,快速入门需要覆盖基础且重要的内容,同时结构清晰。 首先,C++的特点和应用场景。要强调它的高性能和底层操作能力,这样用户能明白为什么选择C++。然后基础语法部分,变量、数据类型、运算符这些是必须的,但得简明扼要,避免信息过载。 接下来,流程控制。条件语句和循环是编程的基础,这里需要例子,比如if-else和for循环的简单示例,帮助理解。 函数部分,用户需要知道如何定义和调用函数,参数传递方式(值传递、引用、指针)可能对新手来说有点难,但必须提到,因为这是C++的重要概念。 面向对象编程C++的核心,类、对象、继承、多态这些概念需要解释清楚,但可能得用简单的例子,比如定义一个Animal类,然后派生Dog类,展示多态的使用。 内存管理部分,指针和引用的区别很重要,动态内存分配(new/delete)必须强调,避免内存泄漏。这部分可能容易出错,所以需要特别提醒用户注意事项。 标准库常用内容,比如STL容器(vector、map)、字符串处理、文件操作,这些都是实际开发中常用的,给出简单例子能帮助用户快速上手。 最后,编译与调试,介绍g++和VS的基本用法,让用户知道如何将代码变成可执行文件,以及如何调试。 进阶部分可以提到C++11/14/17的新特性,模板和智能指针,这样有兴趣的用户可以继续深入学习。但要放在最后,避免初级内容被冲淡。 需要检查是否符合系统级指令:所有数学公式用$...$,独立公式用$$...$$,但C++内容可能涉及代码,所以这里可能不需要太多公式,但如果有算法部分可能需要。不过用户的问题主要是语法和知识点,所以可能不需要数学公式。但要注意如果有变量或表达式,比如在模板元编程中,可能需要用行内公式,但暂时可能不需要,先观察。 结构要清晰,分点列出,每个大标题下有子项,用代码示例说明。使用中文,语言简洁,避免术语混淆。比如,解释指针和引用时,用简单的代码展示它们的区别。 可能用户需要的是快速查阅的笔记式内容,所以每个部分不宜过长,重点突出。例如,OOP部分要强调封装、继承、多态,给出代码例子,让用户能直观看到类如何定义,对象如何创建。 需要确保所有代码示例语法正确,比如在函数部分,正确的函数定义和调用方式。避免错误,比如在for循环中变量作用域的问题,或者指针未初始化的错误例子,除非是为了说明问题。 最后,检查是否符合格式要求:使用中文,结构清晰,分步骤和知识点,每个部分有示例和解释。可能还需要在开始或结束处提醒用户练习和实际编码的重要性,但用户没有特别要求,可能放在进阶建议里。 总结,整理C++的核心知识点,按逻辑顺序排列,从基础到高级,每个部分简明扼要,配合代码示例,帮助用户快速理解和应用。</think>以下为C++快速入门知识点整理,按学习路径分层讲解: --- ### 一、C++特点与应用场景 1. **多范式语言**:支持面向过程、面向对象、泛型编程 2. **高性能**:可直接操作内存,编译型语言(如:游戏引擎、操作系统开发) 3. **标准演进**:C++98/11/14/17/20(推荐至少掌握C++11特性) --- ### 二、基础语法 ```cpp // 基础结构 #include <iostream> // 头文件包含 using namespace std; // 命名空间 int main() { // 程序入口 cout << "Hello World"; return 0; // 返回值 } ``` 1. **变量与数据类型** - 基本类型:`int/double/char/bool` - 类型修饰符:`short/long/signed/unsigned` - 类型推导:`auto x = 5;` (C++11) 2. **运算符** - 算术:`+ - * / %` - 关系:`== != > <` - 逻辑:`&& || !` - 位运算:`& | ^ ~ << >>` --- ### 三、流程控制 ```cpp // 条件语句 if (score >= 90) { cout << "A"; } else if (score >= 60) { cout << "Pass"; } else { cout << "Fail"; } // 循环结构 for(int i=0; i<10; ++i) { cout << i << " "; } while(n > 0) { n--; } ``` --- ### 四、函数 ```cpp // 函数定义 int add(int a, int b) { return a + b; } // 函数重载 double add(double a, double b) { return a + b; } // 参数传递方式 void swap(int &a, int &b) { // 引用传递 int temp = a; a = b; b = temp; } ``` --- ### 五、面向对象编程 ```cpp class Animal { // 类定义 private: // 访问控制 string name; public: Animal(string n) : name(n) {} // 构造函数 virtual void speak() { // 虚函数(多态基础) cout << "Animal sound"; } }; class Dog : public Animal { // 继承 public: Dog(string n) : Animal(n) {} void speak() override { // 重写方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值