1546|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

【经典C语言知识】C/C++编程难点总结 [复制链接]

知识点一:指针

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;

}

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

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

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表