知识点一:指针
1. 指针:变量在内存中所存储空间的首编号,就称作为该变量的地址,也叫做指针。
指针变量: 他专门存放另外一个变量的指针
int* p_age;
p_age=&age;
2.数组与指针
使用指针访问一维数组元素:如果指针变量p_score已经指向数组中的一个元素,则p_score+1表示指向同一数组中的下一个元素。
#include<iostream>
using namespace std;
int
main()
{
int score[5];
int *p_score;
int sum = 0;
for (int i = 0; i < 5; i++)
{
cin >> score[i];
}
p_score = score;
for (int i = 0; i < 5; i++)
{
sum += *(p_score + i);
}
cout << sum << endl;
system("pause");
return 0;
}
二维数组的指针
#include<iostream>
using namespace std;
int main()
{
int score[2][3];
int* p;
int sum = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> score[i][j];
}
}
p = score[0]; //二维数组中,不能够是p=score
for (; p < score[0] + 6; p++)
{
sum += *p; //对输入的6个值进行求和
}
cout << sum << endl;
system("pause");
return 0;
}
指针和函数
使用指针作为函数的参数
#include<iostream>
using namespace std;
void swap(int*
data1, int* data2)
{
int tmp;
tmp = *data1;
*data1 = *data2;
*data2 = tmp;
}
int main()
{
int a = 10, b = 20;
swap(&a,&b);
cout << a << " " << b << endl;
system("pause");
return 0;
}
使用数组名作为函数的参数
#include<iostream>
using namespace std;
int average(int* arr, int num)
{
int sum = 0;
for (int i = 0; i < num; i++)
{
sum = sum + arr[i];
}
return (sum / num);
}
int main()
{
int
score[5] = {60,50,70,80,90};
cout << average(score, 5) << endl;
system("pause");
return 0;
}
知识点二:使用new运算符动态开辟空间
C++中允许在程序中动态开辟空间,即用多少开辟多少运算符new:
在堆内存区中进行内存的动态分配
例如:
double* d;
d=new double;
*d=30.5;或者 double* d;
d=new double(30.5);
使用数组动态开辟空间
动态数组:指针变量=new<类型>[整形表达式]
例子:
#include<iostream>
using namespace std;
int main()
{
int n;
int* p;
int sum=0;
cout << "请输入班级的人数";
cin >> n;
p = new int[n];
if (!p)
{
return 1;
}
cout << "请输入数学的成绩";
for (int i = 0; i < n; i++)
{
cin >> p[i];
}
for (int i = 0; i < n; i++)
{
sum += p[i];
}
cout << "平均值为" << sum / n << endl;
system("pause");
delete[n]p;
p = NULL;
return 0;
}
知识点三:使用delete动态释放空间delete d;
d=NULL; //一个好的习惯
知识点四:结构体
struct 结构体名
{
类型 标识符 成员名;
类型标识符 成员名;
......
};
#include<iostream>
using namespace std;
struct goods {
char name[15];
float price;
int amount;
float total;
};
int main()
{
struct goods
myGoods;
strcpy(myGoods.name, "连衣裙");
myGoods.price = 50;
myGoods.amount = 2;
myGoods.total = myGoods.price*myGoods.amount;
cout << "宝贝名称:" << myGoods.name << "单价:" <<
myGoods.price << "数量: " << myGoods.amount << "总价:" << myGoods.total << endl;
system("pause");
return 0;
}
知识点四:共用体
概念:使几个不同的变量共占同一段内存的结构称为“共用体
”,也叫做“联合体”。
union 共用体名
{
int i;
char ch;
float f;
}; //这个共用体会
开辟四个空间
union data a b;
例子:
#include<iostream>
using namespace std;
union category
{
int c1;
char position[10];
};
struct person
{
char name[10];
int num;
char job;
union category cat;
};
int main()
{
struct person stu;
struct person tea;
strcpy(stu.name, "zhang");
stu.num = 501;
stu.job = 's';
stu.cat.c1 = 5001;
strcpy(tea.name, "li");
tea.num = 200;
tea.job = 't';
strcpy(tea.cat.position, "prof");
cout << "学生的情况: " << stu.name << "," << stu.num <<
"," << stu.cat.c1 << endl;
cout << "老师的情况:" << tea.name << "," << tea.num << "," <<
tea.cat.position << endl;
system("pause");
return 0;
}
总结:同一个内存段可以用来存放几种不同类型的成员,但是在每一个瞬间只能够存放其中一种,而不是同时存放几种;
共用体变量中起作用的成员是最后一次存放的成员,在存入新的一个成员后原有的成员的作用就会失去作用;共用体变量的地址和它的各成员的地址都是同一地址。不能对共用体变量名赋值,也不能企图引用变量名得到一个值,又不能在定义共用体变量时候对它初始化。
|