c++经典编程题_【经典C语言知识】C/C++编程难点总结

知识点一:指针

1.  指针:变量在内存中所存储空间的首编号,就称作为该变量的地址,也叫做指针。

指针变量: 他专门存放另外一个变量的指针     

int*    p_age;

p_age=&age;

2.数组与指针

使用指针访问一维数组元素:如果指针变量p_score已经指向数组中的一个元素,则p_score+1表示指向同一数组中的下一个元素。

#include

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

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

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

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

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

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

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;

}

总结:同一个内存段可以用来存放几种不同类型的成员,但是在每一个瞬间只能够存放其中一种,而不是同时存放几种;

共用体变量中起作用的成员是最后一次存放的成员,在存入新的一个成员后原有的成员的作用就会失去作用;共用体变量的地址和它的各成员的地址都是同一地址。不能对共用体变量名赋值,也不能企图引用变量名得到一个值,又不能在定义共用体变量时候对它初始化。

我们官方的QQ群:281549832

特别感谢网友的大力支持。

我们的开源团队不断扩大,希望大家快来一起加入我们吧。

在这里还是要谢谢大家的大力支持!

大家快来关注吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值