杂记(那些我还容易混淆的c和c++知识)

1:
 定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。
2:
 多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现;
在程序编译时多态性体现在函数和运算符的重载上;  
3:
 y引用: 切记要对其进行初始化
   不能再把该引用名作为其他变量名的别名
   引用本身不占存储单元,系统也不给引用分配存储单元
   不能建立数组的引用
4:注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。(都可以利用下表访问具体某一个字符但是指针不可以通过下表更改内容)
 char a[] = "hello world";
 //在程序运行时决定,有换行符,c把字符串当做字符数组来处理
 char *b="zzy";
 //在编译时决定,有换行符,程序在定义字符串指针变量b时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给b
 char *p = a;
 
 cout<< sizeof(a) << endl; // 12 字节
 cout<< sizeof(p) << endl; // 4 字节
 
char str[ ]={"I am happy"}; 
char str[ ]="I am happy";    
//==char str[ ]={‘I‘,‘ ‘,‘a‘,‘m‘,‘ ‘,‘h‘,‘a‘,‘p‘,‘p‘,‘y‘,‘\0‘};
//!=char str[ ]={‘I‘,‘ ‘,‘a‘,‘m‘,‘ ‘,‘h‘,‘a‘,‘p‘,‘p‘,‘y‘};此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。

注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
            char str[ ];
            str="I am happy";(错误)
   
 char *P=new char[];

p="zfd";
 strlen(p);//长度不包括结束符
 但是strcpy(a,p);//又要包含p的结束符
 //反正谨记:数组分配的字符串不会自动加结束符,但是字符串常量会加("zzy")
5:不能建立数组的运用,数组是若干元素的集合,无法建立一个数组的别名
string foo( );
void bar(string & s);
bar(foo( ));
bar("hello world");//不对 ,原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的
6:
无论是静态,局部还是全局数组只有在定义时才能初始话,否则必须通过其它方法,比如循环操作实现。
任何
int a[3];
static int b[3];
a[3] = {1, 2, 3};
b[3] = {1, 2, 3};
没有在定义时初始化都是错误的!
char *str3;str3="12345";是可以的
7:
使用&取数组的地址,它所取的是整体数组的一个地址
8:
fun1(int *ptr)
{
      ptr[1]=3;
      *ptr=3;
      ptr=array2;//可以把另一个数组名赋给ptr,因为它是一个指针
}
fun2(int arr[])
{
      arr[1]=3;
      *arr=3;
      arr=array2;//也可以,因为arr编译器是按照指针的形式处理的
}

int arrary[100],array2[100];
main()
{
         array=array2;//编译错误"无法修改数组名"
}

时间: 2024-11-03 21:51:53

杂记(那些我还容易混淆的c和c++知识)的相关文章

听直播课还可抢红包!手快有,手慢无哦!!

什么?抢红包?我怎么不知道?这是分分钟错过几百万的节奏啊! (双膝跪地,眼望苍天,内牛满面...) 跟大海老师学习,不仅可以抢红包,还可学到不止百万的知识财富,书中自有黄(颜)金(如)屋(玉)哦... 2015年7月7日(是不是个好日子呢),大海老师会开带领大家一起完成CocosLua的学习,每周2周四晚上7:30-9:30在腾讯课堂介绍如何使用CocosLua开发手机游戏,为了让大家劳逸结合,学的有趣,课堂管理会在腾讯课堂直播上为大家派!发!红!包!,每次直播课红包派发两次,每次时间为10分钟

资深程序员冒死揭开软件潜规则:无法维护的代码

原始博文发布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对

Java学习之网络编程实例

转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码

【搞笑】如何逼死维护人员

编写无法维护代码的技巧的重中之重是变量和方法命名的艺术.如何命名是和编译器无关的.这就让你有巨大的自由度去利用它们迷惑维护代码的程序员. 妙用 宝宝起名大全 买本宝宝起名大全,你就永远不缺变量名了.比如 Fred 就是个好名字,而且键盘输入它也省事.如果你就想找一些容易输入的变量名,可以试试 adsf 或者 aoeu之类. 单字母变量名 如果你给变量起名为a,b,c,用简单的文本编辑器就没法搜索它们的引用.而且,没人能猜到它们的含义. 创造性的拼写错误 如果你必须使用描述性的变量和函数名,那就把

bfc+css

CSS BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.在创建了 Block Formatting Context 的元素中,其子元素会一个接一个地放置.垂直方向上他们的起点是一个包含块的顶部,两个相邻的元素之间的垂直距离取决于 ‘margin’ 特性.在 Block Formatting Context 中相邻的块级元素的垂直边距会折叠(collapse). 当涉及到可视化布局的时候,Block Formatting

Android项目架构搭建

1. 前言 安卓属于小团队开发,架构的重要性在很多公司其实不是那么的明显,加上现在的开源框架层出不穷,更好的帮助我们上手android项目的开发.我前两年也在公司主导过项目开发,搭建过不少项目,以前主要的倾向是MVC,导致了activity/fragment过大,而且很多公共功能杂乱在项目中,后期维护起来不方便,最近刚好有时间,重新搭建了一个新的框架.(ps:有建议或者更好想法的可以留言.) 2. 用到的知识点: UI--面向对象 数据交互--MVP模式 数据库--GreenDao 网络图片加载

Java网络编程基础【转】

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

css清浮动处理

在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Clear float</title> 6 <style type="tex

12中IT语言的特点

软件开发这个行业的武器就是编程语言.IT发展到今天,产生了种类繁多的编程语言,有的古老却任然使用,有的新生而激情四射,有的只是昙花一现就黯然消逝,有的则从诞生之日就不断 发展壮大.选择何种编程语言平台,便是摆在很多希望步入IT行业人面前的首道难题. 1.Java Java语言自1995年发布以来,由于其面向对象.跨平台和分布式的特性迅速风靡整个IT界.加之Sun.Oracle.IBM等行业巨头的大力支持,以及众多开发者为其设计的各种框架技术使得Java技术涵盖了当今软件开发的几乎所有方面.其中,