C++学习笔记_one_day

来源:互联网 发布:sqlserver 别名 编辑:程序博客网 时间:2024/06/06 09:04

1cc++的关系:

c++c的超集 c++包含c

2c语言:

132个关键字

  数据类型(12):

  signed/unsigned

  char/short/int/long

  float/double

  void/struct/union/enum

 流程结构(12):

     顺序/循环/分支

    循环:for while do while goto

    分支:if else /switch case/defluat

    break/continue/return/

    其他(8):

  存储:auto/extern/register/static/

  sizeof/typedef/const/volatile 易变变量

2)运算符(优先级和结合性)

3)指针和函数                       by_吴尚奇

  1. 简单的c++程序

C++程序的编译工具:g++(一定要和gcc版本一致)

C++源文件的后缀:.cppwindows.cclinux

hello.cc

*******************************************************

#include<iostream> //io-> 输入和输出

using namespace std;


int main(int argc,char **argv)

{

//cout << 用来输出变量的

cout << " hello world!\n";

//endl -> end line

cout<<" just do it"<<endl;


return 0;

}

************************************************************

C++文件的编译:g++hello.cc -o hello

#include<iostream> //包含变量的输入和输出函数的声明

using namespace std; //使用std(标准)命名空间

//命名空间:包含 变量和函数的声明

cout <<”hello\n”<<endl;

 

变量的输入和输出:

输出:cout <<“text”

输出:

Int i;

cin >> i

 

例子:韦小宝参加武林大赛

师傅:陈近南

获得 第一名 天地会的总舵主

获得 第二名 娶七个老婆

获得 第三名 踢出师门

xiaobao.cc

**************************************************************************

#include<iostream>

usingnamespace std;


intmain()

{

  inti;

 

  cout<<"小宝,为师要参加第五届“黄山学院”杯武林大会,"

    "告诉为师,你获得第几名"<<endl;

  cout<<">";

  cin>>i;


  switch(i)

  {

    case1:

      cout<<"你替为师接管天地会总舵主吧"<<endl;

      break;

    case2:

      cout<<"为师有七个女儿,你全部娶了吧"<<endl;

      break;

    case3:

      cout<<"你走吧,我没你这个徒弟"<<endl;

      break;

    default:

      cout<<"你太差劲了,为师杀了你"<<endl;

      break;

}


  return0;

}


思考题:

C++C的输入输出有什么不同?C++自动检查数据类型


命名空间:namespace

作用:解决了命名冲突(程序中可以使用同名的变量)

例如:

namespace.cc

×××××××××××××××××××××××××××××××××××××××××××××××××××××××

#include<iostream>

using namespace std;


//定义自己的命名空间


namespace Wu

{

  int i=10;

}


namespace Qi

{

  int i=20;

}


int main(int argc,char *argv[])

{

  //域作用符 ::

  //告诉编译器 变量i定义和申明的地方

  cout<<" Wu::i="<<Wu::i<<endl;

  cout<<" Qi::i="<<Qi::i<<endl;


  return 0;

}

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××


新的数据类型:

bool:(true/false) 非0为真,0为假 true1 false0

例子:

bool.cc

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#include<iostream>

using namespace std;


int main()

{

  bool sex=false;      //true;

  cout<<" LadyGaga 是 一位"

    <<(sex?"帅哥":"美女")<<endl;

  return 0;

}

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

by_吴尚奇

课后作业:

  1. 写一条下列数据类型“int/float/bool/指针” 与“零值”的比较语句


命令行参数:

例如:

Namespace.cc

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

#include<iostream>

using namespace std;


int main(int argc,char **argv)//==char *argv[]

{

//argc,argv都是命令行 参数

//argc 表示命令行参数的个数

//argv 表示命令行参数的值(字符串数组)

 

cout<<" argc="<<argc<<endl;

 

//打印 命令行参数的值

int cnt;

for(cnt=0;cnt<argc;++cnt)

{

cout<<" argv["<<cnt<<"]="<<argv[cnt]<<endl;

}


return 0;

}

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


指针:(写申请空间语句的时候要立即写释放空间的语句)

(段错误/野指针/内存泄漏)

引用reference

定义:变量的别名, &标识

本质:引用的内部实现是指针

注意点:1、不要返回局部变量的引用

  1. 在不改变值的情况下,尽量使用常引用(constconst int i = 10;

refrernce.cc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include<iostream>

using namespace std;


int main()

{

int i=10;

//定义一个引用 &标识引用的

//1、引用必须在初始化的时候赋值,

// 引用每次只能引用一个变量,中途不能改变(终身制)

 

int &ri = i;//ri是 变量 i的引用

 

/* error

* int &ri;

* ri=i;

*/


//2、引用本身不占内存空间

cout<<" &ri="<<&ri<<endl;

cout<<" i="<<&i<<endl;


//3、操作引用就是操作变量本身

cout<<" ri="<<ri<<endl;

cout<<" i="<<i<<endl;


ri+=250;


cout<<"after ri+=250"<<endl;

cout<<" ri="<<ri<<endl;

cout<<" i="<<i<<endl;



return 0;

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`



课后作业2:分别使用引用和指针交换两个输入的整型数据

课后作业3:总结一下指针与引用的区别


C++函数的高级特性:

内联函数:

定义:用inline修饰的函数

特点:

  1. 结构简单(顺序结构)

  2. 函数体内的代码在5行以内

inline.cc

###############################################################

#include<iostream>

usingnamespace std;


//函数的定义

//[修饰符]返回值 [调用方式]函数名 形式参数列表

inlinevoid show()

{

cout<<"I'mhere"<<endl;

return;

}


//普通函数的调用过程

//1、通过函数名找到该函数在代码区域的位置

//2、执行该位置的代码

//3、在函数结束的时候,临时开辟空间存放返回值


intmain(int argc,char **argv)

{

//内联函数执行的时候直接用函数体内的代码,代替函数调用的位置

//特点:执行效率高

show();


return0;

}

###########################################################


内联函数与宏定义的区别

相同点:用代码直接替换调用

不同点:内联函数会对参数进行检查,宏定义不会检查参数的类型


Inline的现状

基本上不再使用了

原因:现在的编译器会自动优化代码,一般简单的函数不用inline优化,编译器也会自动把这类函数当作内联函数处理,反之,函数体比较复杂的函数,即使用inline修饰,编译器也不会将它作为内联函数处理。


递归函数(回顾)recursive

定义:自己调用自己的函数

函数特征:(1)有递归公式

  1. 有退出条件

优点:代码可读性强

缺点:内存开销比较大

例子:1+2+3+....+n


¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

#include<iostream>

usingnamespace std;


intcount(int n)

{

 

if(n>1)//递归条件

return n+count(n-1);

else//退出条件

return 1;

}


intmain(int argc, char *argv[])

{

intn=100;

intsum=0;


sum=count(n);


cout<<"1100之间的和是"<<sum<<endl;


return0;

}

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥


课后作业4by_吴尚奇

输入一个整数nn>2

用递归显示fibonacci数列上第n个位置的数据



0 0
原创粉丝点击