c++小记

1.win32位系统,vc编译器中,char占1字节、short占 2 字节、int ,float,long都占4字节、double 占8 字节.


--------------------------------------------------------------------------------------------------------

1.Break的作用:1.用于switch语句中,从中途退出switch语句。 2.用于循环语句中,从循环体内直接退出当前循环。重点看1.

case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。
因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行;
而且执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不再判断是否与之匹配,直到遇到break语句才停止执行,退出switch语句。
因此,若想执行一个case分之后立即跳出switch语句,就必须在此分支的最后添加一个break语句。
2. 从上面的描述可以看出,switch条件选择语句中的break的作用跟循环控制语句中的作用基本相同:
都是不执行break之后的语句,并结束退出switch语句;
3. 与循环控制中存在continue语句不同的是,switch条件选择语句中没有continue语句;

把case中的break注释掉。
#include<iostream>
using namespace std;
void main()
{
 int choice;
 cout<<"Please make an option:";
 cin>>choice;
    switch(choice)
 {
 case 1:
  cout<<"one"<<endl;
  //break;
 case 2:
  cout<<"two"<<endl;
  //break;
 case 3:
  cout<<"three"<<endl;
  break;
 }
 system("pause");
}
输入2时结果是:two three 不注释是two
C++语言中switch语句中case有无break的区别
求二维数组的行和列:

row=sizeof(a)/sizeof(a[0]);
col=sizeof(a[0])/sizeof(a[0][0]);
1、友元关系是一个类A主动声明友元类和友元函数B,提供给它们对本类的访问特许。B可以 通过A的对象名 访问A的 私有和保护成员 。单向、不能传递、不能继承、

2、初始化:在定义一个变量和常量时指定的初值;赋值:在定义一个变量和常量后使用赋值运算符修改它的值。常量必须初始化。

int main(){
     int *p;
     *p=9;
     cout<<"P的值:"<<*p;
     return 0;
}
隐患:未初始化,随便指向某内存非常危险。(给随便一地址赋值)

3、静态变量生命周期与程序一样:在所有函数外定义、在函数中用static定义(局部可见)。与C不同:有静态成员变量和静态成员函数,可以在不同时期调用的函数进行通信。

局部静态变量

#include<iostream>  
using namespace std;  
void fun()  
{  
    int i = 1; // 局部变量,具有动态生存期,每次进入函数时都初始化  
    static int j = 2; //静态局部变量,具有全局寿命,局部可见,只第一次进入函数时被初始化  
}  
int main()  
{  
    static int k; //静态局部变量,具有全局寿命,局部可见  static未定义初值自动为0 普通动态生存期变量不赋初值意味着初值不确定。int x;
    cout<<j  ;    //j=0
}  
不会随着每次函数调用产生副本,也不会随着函数返回而失效。一次调用返回之后,下次再调用时这个变量还会保持上一次完成的值,而不是再次被初始化。



4、数组做形参:

void f(int a[])
void f(int a[3])
void f(int *a)//正确
void(int a)//是错的

5、int a[10] a是数组首元素的地址,&a是整个数组地址。a+1步长是4,&a+1步长是40。

6、new 返回一个指向新分配内存首地址的类型的指针。 delete也是返回指针。

new和delete可以重载。

自动调用类的构造函数,Testclass *p=new Testclass;   delete p;

int* point=new int(2)。括号内不写数值代表0。若不希望在分配内存后设定初值,可以去掉括号int* point=new int。delete point/delete [] point.

内存泄露:不释放会导致动态分配内存无法回收,使程序占据的内存越来越大。

malloc:int* a;  a =(int*)malloc(sizeof(int)); 前面是强制转换成的指针类型,与要赋值的变量类型一样。后面是为了计算内存大小的。若前后不一致,int* p = (int *) malloc (1); Int指针占4个字节,却只分配1个,会导致出错。

malloc free返回void* 指针。

7、进程是一个“执行中的程序”。一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

8、char、string、int

char to int:

line=['1''2''5'' ''3' '5']; 转成b=[125 3 5]:用‘1’-‘0’会将char转int,然后再*10或*100

char to string

#include <fstream>
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
string x;
int main()
{
	
	ifstream in("roget.txt");
	string filename;
	string line;
	while (getline (in, line)) // line中不包括每行的换行符
	{ 	  
        stringstream ss(line);  
		while(ss>>x)    //x=125 3 5 是字符串
        cout<<x<<endl;  

	}	
	return 0;
}
string to int:

#include <cstdlib>
temp[i]=atoi(x.c_str());  //temp=[125,3,5]是整形


memset: 对一段内存空间赋值为某个字符 char a[10]; memset(a,'e',sizeof(a))

struct和typedef struct的区别

typedef struct _point{
int x;
int y;
}point; //类的别名
point p1;//相当于struct _point p1;

struct _point{
int x;
int y;
}qw; //同时定义类和对象实例
qw p2; p2.x=1;//是错误的 本身就是对象
qw.x=1;//正确


结构体默认访问控制属性的public,类默认是private
死循环:for(;;){}   while(1){}

do while是先执行再判断,无论对错都会执行一次。while是先判断可能一次都不执行。

const常量必须被初始化且不能更新


printf(%m.nd) m定义的是总的宽度,后边的定义的是输出的个数。m<0左对齐(默认右对齐即往左边补空格)

printf("%.5s","abcdefg");的输出结果是abcde
printf("%5s","abcdefg"); abcdefg
printf("%8.2s\n", "abcd"); //  ------ab左边用8-2个空格补全



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值