课程笔记

下学期开学也有段时间了,已经上了数周的程序设计课了,也学到了不少C++的知识点和学识。
首先我们学习了符合类型。
复合类型是指基于其他类型定义的类型。接下来介绍c++复合类型中的两种:应用和指针, 是基于整形和浮点型创建的。影响最为深远的复合类型是类。

                                        ***一,数组***

1.数组只有在定义时候才能使用初始化,不能将一个数组赋给另一个数组。
2.数组名[下标],下标是从0开始的,也就是说数组中的第一个元素是数组名[0]。
在声明数组时初始化数组,例:
Int array[3]={1,2,3};用逗号吧各个值隔开。
3.如果只对数组中的几个初始化值,则其他默认设置为0
难点:
char a[ ]={‘a’,‘b’,‘c’,‘d’,‘e’};//必须是char 类型的 字符串
strlen(a);//计算可见字符串个数

                                      ***二,字符串***

1.字符串可能看成一个连续的字符数组,但是字符串有一个结尾符,如下
char string[5]={‘a’,‘b’,‘c’,‘d’,‘e’};//这是字符数组,并不能看做一个字符串
char string[5]={‘a’,‘b’,‘c’,‘d’,’\0’};//这是字符数组,也可以看做字符串
如果要用char数组保存字符串,则数组长度必须比字符串的长度大1,最后一位用来储存\0结尾符,不然会出现未知错误。
2,字符串输入:面向行输入getline()
char a[20]; //必须为char类型的 字符数组
cin.getline(a,20);//将用户输入的字符 读入到一个包含20个元素的 a数组中。
cout<<strlen(a);//输出输入字符个数
如果输入的字符多于19个(1个’\0’),geline仅仅取前19个字符。而多于的不会留在输入队列中(区别与get())
3,字符串输入:面向行输入get()

       char a[2];
       char b[2];
       cin.get(a,2);
       cin.get(b,2);
       cout<<strlen(a)<<endl;
       cout<<strlen(b)<<endl;
    输入:abcd 
    输出:1   1     如果是getline()则输出:1   0
 get()取的是n-1个可见字符,数组声明为 n 则读取n-1字符,最后一个设置为'\0';遇到换行符则将其留在输入队列。
 第二次调用cin.get()读取第一个字符为  换行符。

难点:
两个cin 为何只允许输入一次??
char a[5];
cin.get(a,5);
cin.get(); //读取输入队列中换行符并丢弃。防止下次读换行符时认为结束而终止。造成第二次不能输入
cout<<a[1]<<endl;
char b[5];
cin.get(b,5);
cout<<b[0]<<endl;

                                        ***三,string类型***

1,连接两个字符串
string str1,str2,str3;
str3=str1+str2;
/上面是C++做法,下面是C语言做法/
strcpy(str3,str1);//将str1复制到str3中
strcat(str3,str2);//将str2添加到str1中
2,未被初始化的字符数组,第一个空字符出现的位置是随机的。
char a[10];
cout<<strlen(a);
输出 4 //0-9 随机

                                       ***四,结构类型***

1,struct 用法
struct node
{
int data;
node *next;
}p1;//声明结构类型的变量
2,指针和自由存储空间
1)用法: int a=6;
int *p;// ‘p’ 表示存储在p地址处的值
p=&a;//指针为p,存储的是值的地址,而不是值本身。
或者写为:int
p=&a;//将指针 p的值设置为&a 而不是将 *p的值
2)指针的危险
long * length;
*length=25365;//length 确实是一个指针,但是没有说明指向哪里,原因是没有初始化指针length
3) new/delete申请与释放内存
int * pn=new int ;//分配int型内存,然后把该内存块地址赋值给指针
*pn=100;//给声明的内存单元赋值
delete pn;//释放pn指向的内存单元,不会删除pn指针本身(pn可以指向另一个新分配的内存块)

                                       ***五,指针、数组和指针算术***
     1,double  a[3]={100,200,300}; 
           double  *p=a;//p指针指向的是数组a的第一个元素的地址
           cout<<"地址为:"<<p+1<<"存储的值为:"<<*(p+1)<<endl;//输出的是a[1]的地址和a[1]的值
           说明:p+1  增加的量等于 p指针指向类型的字节数(double  8字节)                           C++将数组名解释为数组第一个元素的地址
    2,sizeof作用于 数组显示数组占用的字节数,作用于

指针显示指针长度

最后学的最新的知识是函数,是在主函数外定义的一种函数,要学会在主函数外定义具有各种功能的函数,然后在需要时将其调用。这样写出来的程序,可以让主函数看着不那么臃肿,也不用将一个功能在主函数中反复定义,直接调用会方便很多。

                                       ***六,函数***

(1)函数定义:
由返回类型、函数名、参数列表、函数体构成。如下:
返回类型 函数名(参数列表){
函数体;
};
(2)函数调用:
函数名(实参列表)
函数定义中的参数被称为形参。而调用函数时提供的具体的数据成为实参。
注意:
①实参的类型一定要与相应的形参类型相匹配。
②如果定义函数为void类型函数,无返回值。否则一定要有return返回值。
(3)函数声明:
由函数返回类型、函数名和形参列表构成。
注意:
①函数使用前必须说明。
②一个函数可以在程序中多次声明,但函数只能在程序中定义一次。
(4)递归函数:直接或间接调。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值