#include <iostream> using namespace std; int main(int args, char *argv[]) { int ivar = 0; int num = 0; label: ivar ++; num += ivar; if(ivar < 10) { goto label; } cout << num << endl; return 0; }
调用默认參数的函数使用方法举例:
#include <iostream> using namespace std; void OutputInfo(const char* pchData="Stay hungry,Stay foolish.") { cout << pchData << endl; //输出信息 } int main(int argc, int *argv[]) { OutputInfo(); //利用默认值作为函数实际參数 OutputInfo("lasolmi"); //直接传递实际參数 return 0; }
能够使用va_list类型和va_start、va_arg、va_end 3个宏读取传递到函数中的參数值。使用可变參数须要引用STDARG.H头文件。
例:定义并调用可变參数函数
#include <iostream> #include <stdarg.h> using namespace std; void OutputInfo(int num,...) { va_list arguments; va_start(arguments, num); while(num--) { char *pchData = va_arg(arguments,char*); int iData = va_arg(arguments, int); cout << pchData << endl; cout << iData << endl; } va_end(arguments); } int main(int argc, int *argv[]) { OutputInfo(2, "Bejing", 2008, "lasolmi", 2014); return 0; }
函数调用时,编译器以參数的类型及个数来区分调用哪个函数。
【内联函数 inline】
使用内联函数能够降低函数调用带来的开销(在程序所在文件内移动指针寻找调用函数地址带来的开销),应该在函数实现代码非常简短或者调用该函数次数相对较少的情况下将函数定义为内联函数。
变量的存储类别:auto; static; register; extern
auto变量:C++中默认的存储类型
自己主动变量的作用域仅限于定义该变量的个体内。
动态存储,栈中不同个体中同意使用同名的变量而不会混淆。
static变量:
在函数中定义就在函数中使用;但生命期为整个程序。
register变量:
寄存器变量将局部变量的值存放在CPU的寄存器中,使用时不须要訪问内存,而直接从寄存器中读写。
(1)寄存器变量属于动态存储方式。凡须要使用静态存储方式的变量不能定义为寄存器变量。
(2)编译程序会自己主动决定哪个变量使用寄存器存储。register能够起到程序优化的作用。
extern变量:
在使用其它源文件的全局变量时,仅仅须要在本源文件里使用externkeyword来声明这个变量就可以。
指向函数的指针:指针变量也能够指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针,能够用一个指针变量指向函数,然后通过该指针变量调用此函数。
例:
#include <iostream> #include <iomanip> using namespace std; int avg(int a, int b); int main(int argc, int *argv[]) { int iWidth, iLength, iResult; iWidth = 10; iLength = 30; int (*pFun)(int, int); //定义函数指针 pFun = avg; iResult = (*pFun)(iWidth,iLength); cout << iResult << endl; return 0; } int avg(int a, int b) { return (a+b)/2; }
例:使用结构体指针变量引用结构体成员。
#include <iostream> using namespace std; int main(int argc, int *argv[]) { struct PERSONINFO { int index; char name[30]; short age; }*pPersonInfo, pInfo={0,"lasolmi",21}; pPersonInfo = &pInfo; cout << pPersonInfo->index << endl; cout << pPersonInfo->name << endl; cout << pPersonInfo->age << endl; return 0; }
(2)在定义时声明其它已定义好的结构体变量。
可在声明结构体数组时直接对数组进行初始化:
struct PersonInfo { int index; char name[30]; short age; }Person[4] = { {1, "figo", 23}, (2, "ling", 22), (3, "me", 21), (4, "cong", 20) };
union 共用体类型名 { 成员类型 共用体成员名1; 成员类型 共用体成员名2; ... 成员类型 共用体成员名n; };
【枚举类型】
常见的枚举类型声明形式:
enum 枚举类型名
{
标识符[=整型常量];
标识符[=整型常量];
标识符[=整型常量];
}枚举变量;
范例:枚举变量的赋值。
#include <iostream> using namespace std; int main(int argc, int *argv[]) { enum Weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; int a = 2 , b = 1; Weekday day; day = (Weekday)a; cout << day << endl; day = (Weekday)(a-b); cout << day << endl; day = (Weekday)(Sunday+Wednesday); cout << day << endl; day = (Weekday)5; cout << day << endl; return 0; }
版权声明:本文博主原创文章,博客,未经同意不得转载。
原文:http://www.cnblogs.com/lcchuguo/p/4843259.html