`

(一)基础知识

阅读更多

main函数   

    唯一被操作系统显示调用的函数。

返回类型为int,返回值一般是一个状态指示器,0往往表示成功执行完毕,其它非0都有os指定的含义。

main函数的参数可以是空,也可以将字符串数组传入。

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

int main(int argc, char **argv)

例如:main位于prog中,执行prog -d -o ofile data0,则argv[0]=”prog”argv[4]=”data0”

 

#include <iostream>
#include <assert.h>
double stringToNumber(char* s);
int main(int argc,char *argv[]){
	assert(argc==3);
	double sum=0;
	sum=stringToNumber(argv[1])+stringToNumber(argv[2]);
	std::cout<<sum;
	return 0;
}

double stringToNumber(char *s){
	double a=1.0,b=0.0,c=0.0;
	if(*s=='-'){
		a=-a;
		s++;
	}
	assert(*s>=48&&*s<=57||*s=='.');
	while(*s>=48&&*s<=57){
		b=b*10.0+(*s-48);
		s++;
	}
	if(*s=='.'){
		s++;
		double k=1.0;
		while(*s>=48&&*s<=57){
			k=k*0.1;
		    c=c+(*s-48)*k;
		    s++;
	    }
		assert(*s=='\0');
	}
	assert(*s=='\0');
	return a*(b+c);
}

 

编译

编译与具体的os及编译器相关。

IDE将编译器及构建、相关工具绑在一起,这对开发复杂的程序非常有效。

GNU的编译命令为g++;例如:$g++  prog1.cc -o -prog1;

Visual studio的编译器命令为cl。例如:c:\directory>cl -GX prog1.cpp

 

输入输出

iostream库的基础是istream(输入流)ostream(输出流)。流是指从某种IO设备上读入或者写出字符序列。

标准库定义了4IO对象,分别是:cin(标准输入,istream对象)cout(标准输出,ostream对象)cerr(标准错误,用来输出警告和错误信息,ostream对象)clog(输出执行过程中的一般错误,ostream对象)

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

#include <iostream>

int main(){

    int sum=0;

    int value;

    while(std::cin>>value)//读取整数,直到读取失败

        sum+=value;

    std::cout<<"sum is"<<sum<<std::endl;

    return 0;

}

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

  “<<”:输出操作符,左边为ostream对象,右边是要输出的值,返回左边的输出流本身。

  “>>”:输入操作符,左边为istream对象,读取数据集返回到右边的变量中。

  “endl”:是一个操纵符,具有换行的效果,并刷新与设备相关的缓冲区。通过刷新可以使用户及时看到写入流中的输出。没有刷新可能使输出停留在流中,如果程序崩溃,可能导致对程序出错位置的误判。

  “std”:这是一个命名空间,可以避免由于无意使用了库中定义的相同的名字。“::”是作用域操作符。

  以上while语句是一个测试输入的是否是整数,如果不是或者读入结束,则测试失败。

 

注释

C++注释有两种,单行注释以“//”开头,成对注释用“/* */”。

成对注释号不能嵌套。

 

整型

整数:short(至少16)int(16)long(32)。默认带符号,加前缀unsigned表示不带符号,unsigned int可以简写成unsigned

字符:char(8)wchar_t(16)wchar_t用于扩展字符,如汉字日语。

布尔值:表示真假,将0值算术代表false,非0值代表true

 

符号型

float(326位有效数字)double(6410位有效数字)long double(9612810位有效数字)

 

字面值

整数字面值:十进制(20)、八进制(024)、十六进制(0x14)。默认是intlong类型的,没有short型。可加后缀来表示类型(128u1024UL8LU1L)

浮点字面值:十进制和科学计数法。后缀FL表示类型。例如:3.14159F3.14159E0f.001f1e-3f12.345L1.2345E10.0e0

布尔值面值:truefalse

字符字面值:可打印的用单引号括起来,’a’’2’’,’’ ’,都是char类型,加前缀L就得到wchar_t宽字符型,如:L’a’。转义字符一般是不可打印的或者有特殊意义,例如换行符’\n’,回车符’\r’,水平制表符’\t’,纵向制表符’\v’,退格符’\b’,单引号’\’’,空字符’\0’,用十六进制定义的转移字符形式为’\xdd’

字符串字面值:由双引号括起来的零个或多个字符,末尾为空字符。

 

变量

变量提供了可以可以操作的有名字的存储空间。每个变量都有特定类型,该类型决定了变量的内存大小、布局、能够存储在该内存中的值得取值范围、可用于该变量的操作符。

 

变量的初始化

int ival=1024;    //直接初始化

int ival(1024);    //复制初始化

std::string titleA=”hello”

std::string titleB(“hello”);

std::string titleC(5,’3’);    //”33333”

对于内置类型,直接初始化与复制初始化几乎没有区别。对于类类型,有些初始化仅能用直接初始化完成。这与构造函数定义初始化有关。

对于内置类型,如果定义在函数体外,都会被自动初始化为0

 

声明与定义

声明:指明变量的类型和名字,它不分配存储空间,定义也是声明。

extern int i;   //声明但是不定义,在其它的地方定义

int i;    //声明并且定义

变量可以声明多次但是只能定义一次。

只有当声明是定义时,声明才可以初始化。有extern的声明初始化时必须位于函数外部。

extern double pi=3.1415;    //定义并且初始化。

定义只能定义一次:

extern double pi=3.1415;

double pi;    //错误,重新定义

extern double pi;    //正确,声明

extern double pi=3.1415;   //错误,重新定义

 

const限定符

const将一个对象转换成常量使得它不能被改变。const int bufSize=512

全局作用的非const变量整个程序都可以使用,在一个文件中定义int counter;可以在另外一个文件中声明extern int counter;然后使用counter,这个counter就是钱一个文件中的变量。全局作用的const变量只在该文件中可以使用。不能在其它文件中使用,除非,在定义const变量时就将它指定为extern。例如:在一个文件中定义指定为externconst变量,

extern const int count=fcn();(注意:需要指定为extern)然后在另外一个文件中声明extern const int count;这样,count才能够使用。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics