#include <iostream>
using namespace std;
#include <iomanip>
typedef int G[10]; //自定义类型
void test(int* p); //
void test_0(int &p); //表明p是一个int型变量的别名
void test_1(G &pG); //表明pG是一个G类型变量的别名
void test_2(int* &p); //表明p是一个int*型变量的别名
int main()
{
//对指针变量引用的一点新认识
int k = 9;
int* p = &k;
int* &pp = p; //合法,只能用【指针变量】进行赋值
//int* &ppp = &k; //非法,不能用地址直接赋值
//const int* &ppp = &k; //非法,即使加了const属性
//int* array[10];//指针数组
int array[10] = { 3,5,2,7,90,6,54,3,2 };
test(array);
for (int i = 0; i < 10; i++)
{
cout << array[i] << " ";
}
cout << endl << endl;
//整型变量的引用
int AB = 8;
cout << "AB= " << AB << endl;
test_0(AB);
cout << "AB= "<< AB << endl;
//自定义类型
G g;
test_1(g);
for (int i = 0; i < 10; i++)
{
cout << g[i] << " ";
}
cout << endl << endl;
//指针变量的引用(只能用指针变量进行赋值)
int* P = array;
test_2(P);
for (int i = 0; i < 10; i++)
{
cout << array[i] << " ";
}
return 0;
}
void test(int* p)
{
for (int i = 0; i < 10; i++)
p[i] = i * 100;
}
void test_0(int &p)
{
p = 4;
}
void test_1(G &pG)
{
for (int i = 0; i < 10; i++)
{
pG[i] = i + 2;
}
}
void test_2(int* &p)
{
for (int i = 0; i < 10; i++)
p[i] = i + 10;
}
对自定义类型的引用的再认识
#include <stdio.h>
#include <iostream>
using namespace std;
typedef int Array[10];
typedef int A;
void test(int b[])
{
for (int i = 0; i < 10; i++)
b[i] = i+2;
}
//自定义类型:把它看作和int类型一样操作即可!
//虽然本质是数组,但是别忘了它是自定义类型!
//虽然Array a ,b,,, 本质是数组,但是由于是自定义类型,所以把它们和int相对等即可!
//另外,调试也值得一看!
void test_1(Array &b) //Array &b = a; b是a的别名
{
for (int i = 0; i < 10; i++)
b[i] = i + 2;
}
void test_11(Array b)
{
for (int i = 0; i < 10; i++)
b[i] = i+1;
}
void hh(A c)
{
c = 88;
}
int main()
{
//int a[10];
//for (int i = 0; i < 10; i++)
// a[i] = i+1;
//test(a);
//for (int i = 0; i < 10; i++)
// printf("%d ", a[i]);
//printf("\n");
Array a;
for (int i = 0; i < 10; i++)
a[i] = i;
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
test_1(a);
//test_11(a);
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}