###### 数组，指针
#include<iostream>

using namespace std;

#if 0

/*

*/

int n;

void fn1()

{

n = 6;

}

int main()

{

n =7;

fn1();

cout<<n<<endl;

return 0;

}

#endif

#if 0

/*

*/

class X;

class Y

{

public:

void g(X &x);

private:

int y;

};

class Z

{

public:

void f(X &x);

private:

int z;

};

class X

{

public:

X(int j = 0):i(j){}

friend void Y::g(X &x);

friend class Z;

friend void h(X &x);

void print(){cout<<i<<endl;}

private:

int i;

};

void Z::f(X &x)

{

x.i+=5;

}

void h(X &x)

{

x.i+=10;

}

void Y::g(X &x)

{

x.i+=1;

}

int main()

{

X x(10);

x.print();

Y y;

y.g(x);

x.print();

Z z;

z.f(x);

x.print();

h(x);

x.print();

return 0;

}

#endif

#if 0

/*

*/

class Car;

class Boat

{

public:

Boat(int i = 0):weight(i){}

private:

int weight;

};

class Car

{

public:

Car(int i = 0):weight1(i){}

private:

int weight1;

};

{

cout<<a.weight+b.weight1<<endl;

}

int main()

{

Boat a(5);

Car b(7);

return 0;

}

#endif

#if 0

class A

{

public:

A(int i = 0,int j = 0){cout<<"A"<<i<<j<<endl;}

~A(){cout<<"!"<<endl;}

private:

};

int main()

{

//A a[5] = {A(1,2),A(3,4),A(4,5),A(5,6)};

A *p = new A[5];

delete []p;

return 0;

}

#endif

#if 0

class A

{

public:

void print(){cout<<"print"<<m_i<<m_j<<endl;}

static void test(int i){cout<<"test"<<i<<endl;}

int m_i;

static int m_j;

private:

};

int A::m_j;

int main()

{

/*

int *p = NULL;

A a;

p = &a.m_i; //对于普通的数据成员需要有对象才能给指针赋值

*p = 7;

a.print();

p = &A::m_j;//而静态的成员不同，在定义的时候就被初始化了，所以不需要明确对象

*p = 9;

a.print();

*/

void (A::*p)();//先定义p是一个指向函数的指针

p = &A::print; //将p指向其成员函数

A a;

(a.*p)();  //*p 就是 print

void (*p1)(int);

p1 = &A::test;

p1(4);  //这儿采用 p1 或者 *p1 都是可行的

return 0;

}

#endif

#if 0

#include<vector>//使用vector的头文件

#include<algorithm>//算法的头文件

#include<iterator> //迭代器

#include<functional>//可以调用各种实体库

int main()

{

/*

vector<int>a;

copy(istream_iterator<int>(cin),istream_iterator<int>(),back_insert_iterator < vector<int> >(a));

sort(a.begin(),a.end());

copy(a.begin(),a.end(),ostream_iterator<int>(cout," "));

cout<<endl;

*/

int a[] = {5,4,3,1,2,6,7,8,9,0};

int n = sizeof(a)/sizeof(a[0]);

sort(a,a+n,greater<int>());//加入greater后就是进行逆序排列，不加的话默认为从小到大排序

for (int i = 0;i < n; ++i)

cout<<a[i]<<" ";

cout<<endl;

return 0;

}

#endif

#if 0

#include<vector>

#include<algorithm>

#include<iterator>

#include<functional>

int main()

{

int i;

int data[10] = {1,2,3,4,5,6,7,8,9,88};

vector<int> a;

vector<int> b(10,8);

vector<int> c(data,data+10);

vector<int> d(c);

copy(b.begin(),b.end(),ostream_iterator<int>(cout," "));//begin是刚开始的第一个地址,end是数组最后一个地址。

a.assign(data+4,data+6);//assgin是将里面的值重新覆盖

cout<<*c.begin()<<endl;

copy(a.begin(),a.end(),ostream_iterator<int>(cout,","));

cout<<endl;

b.assign(5,0);

copy(b.begin(),b.end(),ostream_iterator<int>(cout," "));

cout<<endl;

cout<<c.at(5)<<endl; //c[5] at如果越界的话，就会抛出一个异常

c.clear();//将里面的元素清空

if (c.empty())//查看C是否为空

cout<<"C is empty"<<endl;

c.push_back(11);//相c里面压东西

c.push_back(22);

copy(c.begin(),c.end(),ostream_iterator<int>(cout," "));

cout<<endl;

cout<<c.size()<<endl;//c的大小

c.pop_back();//向外面弹出

cout<<c.size()<<endl;

cout<<c.front()<<endl;//front和back就是当前的元素

c.swap(d);//swap就是直接将两个进行交换

copy(c.begin(),c.end(),ostream_iterator<int>(cout," "));

cout<<endl;

/*

rbegin 和 rend 是和 begin,end相反的顺序,

*/

return 0;

}

#endif

#### C语言：全局变量在多个c文件中公用的方法

2015-02-28 10:36:53

#### C语言：全局变量在多个 c 文件中公用的方法

2017-08-19 10:27:16

#### extern终于搞懂了：1同一个工程一个c文件函数调用另一个c文件函数 2 c文件调用另一个c文件变量 3 c调用c++函数

2015-06-28 16:29:18

#### 如何引用一个已经定义过的全局变量 与 全局变量可不可以定义在可被多个.C文件包含的头文件中

2015-03-08 19:17:45

#### 全局变量可不可以定义在可被多个.C文件包含的头文件中？为什么？

2012-01-30 15:40:33

#### 全局变量可不可以定义在可被多个.c文件包含的头文件中

2016-08-22 11:17:53

#### 全局变量在头文件中“定义”

2014-09-18 14:07:28

#### 数组的指针和指向数组的指针变量

2010年03月20日 65KB 下载

#### 指针与数组的对比---------------------------------------

2008年12月19日 34KB 下载

#### 指针与数组.txt 指针与数组.txt

2008年11月17日 9KB 下载