公 告

欢迎各位网友添加友情链接,在您添加本博客:http://linux0818.blogspot.com/ 做为链接后, E-mail:linux0818@gmail.com给我,我将将您的网址添加到本博客。

2008年10月23日星期四

一步一步学习C++:cout/cin/函数的重载/引用/内置函数/new/delete/作用域运算符

 一、cout/cin的应用:
源代码(cout_cin.cpp):
#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, char **argv)
{
    int i = 0;
    int a = 3;
    int x = 0;
    char b = 'b';
    long c = 34567;
    cout << "请输入一个整数:" << endl;
    cin >> x;
    cout << "该整数为:" << x << endl;

    /* 下面第一条和第三条语句功能一样,endl代表着'\n' */
    cout << "hello,xiongfeng!\n";
    cout << "hello,world!";
    cout << "hello,world!" << endl;

    cout << "a = " << a << "," << "b = " << b << "," << "c = " << c <<
        endl;
    cout << "a = " << a << "\n" << "b = " << b << "\n" << "c = " << c <<
        endl;
    /* setw(num)中num表示需留出几个空格,右对齐 */
    cout << "a = " << setw(10) << a << "\n" << "b = " << setw(10) << b <<
        "\n" << "c = " << setw(10) << c << endl;

    for (i = 0; i < 3; i++) {
        cout << "hello = " << i << endl;
    }
    return 0;
}
编译:g++  cout_cin.cpp _Wall
运行:. /a.out
结果:
请输入一个整数:
123
该整数为:123
hello,xiongfeng!
hello,world!hello,world!
a = 3,b = b,c = 34567
a = 3
b = b
c = 34567
a =          3
b =          b
c =      34567
hello = 0
hello = 1
hello = 2
二、函数的重载
源代码(overloading):
/*
 * 重载:允许一个运算符用于不同场合,有不同的含义。也可以说一物多用
 *C语言中在同一作用域中不能有同名的函数
 *C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个
 *数和参数类型不同。这就是函数的重载。即一个函数名多用
 */
#include <stdio.h>
#include <iostream>
using namespace std;

int max(int a, int b, int c);
float max(float a, float b, float c);
char max(char a, char b, char c);
int main(int argc, char **argv)
{
    int max_int = 0;
    float max_float;
    char max_char;
    int a = 0, b = 0, c = 0;
    float d = 0, e = 0, f = 0;
    char g, h, i;

    cout << "请输入三个整数:" << endl;
    cin >> a >> b >> c;
    max_int = max(a, b, c);
    cout << "三个中最大数为:" << max_int << endl;

    cout << "请输入三个浮点数:" << endl;
    cin >> d >> e >> f;
    max_float = max(d, e, f);
    cout << "三个中最大数为:" << max_float << endl;

    cout << "请输入三个字符:" << endl;
    cin >> g >> h >> i;
    max_char = max(g, h, i);
    cout << "三个中最大数为:" << max_char << endl;
    return 0;
}

int max(int a, int b, int c = 6)
{
    if (b > a)
        a = b;
    if (c > a)
        a = c;
    return a;
}

float max(float a, float b, float c)
{
    if (b > a)
        a = b;
    if (c > a)
        a = c;
    return a;
}

char max(char a, char b, char c)
{
    if (b > a)
        a = b;
    if (c > a)
        a = c;
    return a;
}
编译:g++ overloading.cpp _Wall
运行:. /a.out
结果:
请输入三个整数:
1 2 3
三个中最大数为:3
请输入三个浮点数:
3.4 4.5 6.3
三个中最大数为:6.3
请输入三个字符:
s c d
三个中最大数为:s
三、变量的引用类型
源代码(reference_function.cpp):
#include <iostream>
using namespace std;
void swap(int &a, int &b);

int main(int argc, char **argv)
{
    int i = 3;
    int j = 4;
    cout << "i = " << i << "\n" << "j = " << j << endl;
    swap(i, j);
    cout << "i = " << i << "\n" << "j = " << j << endl;
    return 0;
}

void swap(int &a, int &b)       //引用做为函数参数
{
    int tmp = 0;
    tmp = a;
    a = b;
    b = tmp;
}
编译:g++  reference_function.cpp  -Wall
运行:. /a.out
结果:
i = 3
j = 4
i = 4
j = 3
四、内置函数
源代码(inline_function.cpp):
/*
 *  内置函数:在编译时将所调用函数的代码嵌入到主调函数中
 *  使用方法:在函数的首行的左端加一个关键字inline即可
 *  作用:使有些频繁调用的函数被调用的更快,加快程序的执行效率
 *        因为调用函数时需要一定的时间.
 */
#include <iostream>
using namespace std;
inline int func(void);

int main(int argc, char **argv)
{
    int a = 0;
    int i = 0;
    for (i = 0; i < 10000; i++) {
        a = func();             //编译时将func函数体的代码代替func()
    }
    cout << "a = " << a << endl;

    return 0;
}

inline int func(void)
{
    int i = 0;
    for (i = 0; i < 10; i++) {
        ;
        ;
        ;
    }
    return i;
}
编译:g++  inline_function.cpp  -Wall
运行:. /a.out
结果:
a = 10
五、C++动态分配内存(new/delete)
原代码(new_delete.cpp):
#include <iostream>
#include <string.h>
using namespace std;

struct message {
    char name[12];
    int num;
    char sex;
};

int main(int argc, char **argv)
{
    message *p;
    p = new message;
    if(p==NULL){
        cout << "内存分配失败!" << endl;
    }
    strcpy(p->name, "xiongfeng");
    p->num = 1000;
    p->sex = 'm';
    cout << "name:" << p->name << endl;
    cout << "num:" << p->num << endl;
    cout << "sex:" << p->sex << endl;
    delete p;
    return 0;
}
编译:g++ new_delete.cpp  -Wall
运行:. /a.out
结果:
name:xiongfeng
num:1000
sex:m
六、作用域运算符::
源代码(scope.cpp):
#include <iostream>
using namespace std;

/* 作用域运算符:: */
char a = 'b';
int main(int argc, char **argv)
{
    int a = 2;
/*
 * 在C/C++语言中,局部变量a会屏蔽全局变量a的值
 * 所以在下行输出局部变量a的值为2,但使用作用
 * 域运算符::后会输出全局变量a的值为'b'
 */
    cout << "a = " << a << endl;
    cout << "a = " <<::a << endl;
    return 0;
}
编译:g++  scope.cpp  -Wall
运行:. /a.out
结果:
a = 2
a = b
/*************************结束****************************/


--
/**************************************/
Name: Xiong Feng
E-mail:linux0818@gmail.com
MSN:linux0818@hotmail.com
QQ:23562033
Address: GuangZhou.China
/**************************************/

没有评论:

发表评论