在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
程序
三种不同类型的翻译程序
注意:字符类型char实际上存储的也是整数。
i++和++i的区别就是: i++ :先引用,后增加 换句话就是: i++ : 先在i所在的表达式中使用i的当前值,再让i加1 取决于++和i的相对位置: ++在i前面,i先加1,然后在表达式中用i的值;++在i后面,先在表达式中用i的值,然后i再加1。
混合运算时数据类型的转换:
控制语句 ① break ② continue ③ goto(使程序的执行流程跳转到语句标号所指定的语句) 例如可用于跳出多重循环,也可以前跳或者后跳,也可以跳出switch,或者在case之间进行跳转可以想象,它的存在会破坏程序的结构,所以应该少用或不用。 #include<iostream> using namespace std; int main() { int x,sum=0; L1:cout<<"x="; cin>>x; if(x==-1) goto L2; else sum+=x; goto L1; L2:cout<<"sum="<<sum<<endl; }
上述例子中表示j以2作为初始值,类型与i一致。
函数的定义占内存,函数的声明不占内存。
注意:如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序。许多C版本是按自右而左的顺序求值,例如Tubro C++。 #include <stdio.h> void main() { int f(int a,int b); /* 函数声明 */ int i=2,p; p=f(i,++i); /* 函数调用 */ printf("%d\n",p); } int f(int a,int b) /* 函数定义 */ { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 对于函数调用 int i = 2, p; p = f(i, ++i); 如果按自左至右顺序求实参的值,则函数调用相当于f(2,3) 。如果按自右至左顺序求实参的值,则函数调用相当于f(3,3)。
注意:引用相当于起别名。 运行结果: x =5,y=10 x=10,y=5
函数模版举例: #include<iostream> using namespace std; template <class T> T add(T a,T b) { return a+b; } int main() { cout<<"int_add"<<add(10,20)<<endl;//生成整型版本的add函数 cout<<"double_add="<<add(10.2,20.5)<<endl;//生成实型版本的add函数 cout<<"char_add="<<add('A','\2')<<endl;//生成字符型版本的add函数 return 0; }
函数的调用嵌套定义就是在定义一个函数时,其函数体内又包含另一个函数的完整定义。
注:全局变量作用于整个工程文件,同一个工程下不同文件中不能重复定义同一个名字的变量,如FILE2.CPP中的int a=201,b=202产生错误,但是全局变量要想在不同的文件中使用,需要在后续文件中使用extern 声明。
存储方式分为两大类:静态存储类和动态存储类。 具体包含四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。根据变量的存储类别,可以知道变量的作用域和生存期。 函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的(栈),数据存储在动态存储区中。 例如: int f(int a) /*定义f函数,a为形参 */ { auto int b,c=3; /*定义b、c为自 变量 */ ………… } 关键字auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。 有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。
一个程序在编译运行的时候,普通变量存放在栈区STACK,而static会使得变量(如 static int a = 1)存放在DATA,整个内存主要分为四大区:CODE,DATA,STACK,HEAP, DATA区(存放常量,常量变量,静态变量,静态函数,字符串)特点是不会因为函数调用结束,static修饰的变量和函数而释放,直到整个程序结束才释放。 STACK区的变量与函数,即普通变量经过函数调用完成之后会释放。HEAP区空间由程序员自己规定。
寄存器变量为需频繁调用的变量设置,速度快。缺点;存储空间有限。 如果有一些变量使用频繁(例如在一个函数中执行10000次循环,每次循环中都要引用某局部变量),则为存取变量的值要花费不少时间。
虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。 静态局部变量举例: #include<iostream> using namespace std; int fun() { static int cnt=0;//静态局部变量 cnt++; return cnt; } int main() { int i,c; for(i=1;i<=10;i++) c=fun(); cout<<c<<endl;//10 return 0; }
sizeof(A):A所占的字节数
注意:形参数组不定义长度。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论