强制类型转换

#include<iostream>
using namespace std;
int main()
{double a = 12.3;int *p = (int*)&a;*p = 12;*(p + 1) = 23;cout << *(int*)&a <<endl<< *((int*)&a + 1)<<endl;//直接打印double型的a会报错,8字节的空间,前一半12后一半23*(int*)((short*)p + 1) = 88;cout << *(int*)((char*)&a + 2)<<endl;//读取中间4字节的内容,从第3个字节开始,用1字节的char+2//指针/地址的类型决定指针/地址的读写方式(字节数)+1 +-8system("pause");return 0;
}

数组逆置

#include<iostream>
using namespace std;
int a[10] = { 8,5,4,6,1,2,3,7,45,96 };
void sznz(int a[], int n)
{for (int i = 0; i <5; i++,n--){int temp;temp = a[i];a[i] = a[n-1];a[n-1] = temp;}
}
int main()
{/*for(int i=0;i<10;i++){cin >> a[i];}*/sznz(a, 10);for (int j = 0; j < 10; j++){cout << a[j] << endl;}system("pause");return 0;}

指针逆置

#include <iostream>
using namespace std;
void reverse(int *a, int n)
{int *p = a, *q = a + n - 1;  // 分别指向第一个和最后一个元素for (; p < q; ++p, --q){int tmp = *p;*p  =  *q;*q = tmp;}
}int main()
{int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };reverse(a, 10);    // 传递数组名for (int i = 0; i < 10; ++i)cout << a[i] << '\t';cout << endl;system("pause");return 0;
}

数组指针

#include<iostream>
using namespace std;
//指针是基本数据变量类型,地址是数值,指针用来装地址
int main()
{int a[5] = { 12,25,32,4,1 };int *p = &a[0];//int型指针装数组中第1个元素12的地址int(*p1)[5] = &a;//数组指针,装数组a的地址,5是数组a的大小,//int(*p1)[6] = &a   【6】不可以!必须相等!!否则报错!!!//*p == a[0] == 12;//p==*p1 == a == &a[0];//p是这个数组 首元素的地址(首地址)   p+1指向第一个数组第二个元素//p1==&a;                p1是这整个数组的地址               p1+1指向第二个数组 //**p1==*p==a[0]=12;cout << p << endl << *p1 << endl << &a << endl;//第一个数组地址即这个数组首元素地址//cout << ++p1 endl;偏移后p1变化会影响后面输出cout << &a + 1 << endl << *p1 + 1 << endl; //偏移后不会影响后面输出cout << (*p1)[2]<<endl;//a是第一个数组,p1[2]是第三个数组  //*p1[2]是第三个数组的首元素cout << *(*p1 + 2) << endl;cout << p[2] << endl;cout << 2[p] << endl;cout << *(p + 2) << endl;cout << a[2] << endl;//p1是(数组)指针的名字//注意小括号使用,因为[]优先级高于*system("pause");
}

指针数组

//数组元素为指针的数组称之为指针数组。指针数组可以让每个数组元素指向不同的内存块,实现对不同大小的内存块的数据统一管理。
//程序:从键盘输入一组字符串使用指针数组对他们进行由小到大的排序并输出
#include<iostream>
using namespace std;
int main()
{int b = 3,c = 5,d = 1,e = 7,f = 2;int *a[5] = { &b,&c,&d,&e,&f};//指针数组a装5个元素的地址cout << d << endl;*a[2] = 9;//== d=9;改变d的值cout << d << endl;//指针数组拉链结构,不同于2维数组!!指针数组内的不同数组之间各元素不是连续的int q[2] = { 3,2 },w[3] = { 5,2,6 },h[2] = { 9,4 },r[5] = { 7,5,4,3,1 };*(r) = 9;int *t[4] = { &q[0],w,h,r };//t是(指针)数组的名字,4是该数组的大小//也可以用 int * (t[6])={ &q[0],w,h,r };即定义大一点的数组来装地址,没用到的空间不影响 cout << *(t[1]+0) << endl;//输出w[0]即5cout << t[1][0] << endl;char ch[5][20];char *pch[5];int i, j;for (i = 0; i <5; i++){cin.getline(ch[i], 20);//键盘输入字符串,给字符数组赋值pch[i] = ch[i];//将个字符串的首地址传给指针数组各元素cout << &pch[i];}//排序system("pause");return 0;
}

有参数有返回值的函数

#include<iostream>
using namespace std;
int FindMaxnum(int *p, int length,int * p1)
{//int i = 0;int maxnum = p[0];for (int i = 0; i < length; i++){if (p[i] >= maxnum){maxnum = p[i];}}*p1 = maxnum;return maxnum;
}
int main()
{int a[6] = { 45,55,87,4,5,22 };int n = 0;//不初始化可能出问题cout << "最大值为" << FindMaxnum(a, 6,&n ) << endl;cout << "最大值:" <<n << endl;system("pause");
}

计算奇数和

/* 设计一个程序,从键盘输入10个整数,并计算其中奇数的和。
提示:利用一维数组来存放10个整数。判断整数n是否为奇数:n % 2 != 0。
#include<iostream>
using namespace std;
int main()
{int num[10], sum=0;for (int i = 0; i < 10; i++){cin >> num[i];if (num[i] % 2 != 0){sum += num[i];}}cout << sum;system("pause");return 0;
}*/

寻找最大偶数

/*3. 设计一个程序,寻找10个正整数中的最大偶数,若该组数据中不存在偶数,则输出“未发现偶数”*/#include<iostream>
using namespace std;
int main()
{int num[10];int max=0;int i = 0;for (int i = 0; i < 10; i++){cin >> num[i];}max = num[0]; for (int i = 0; i < 10; i++){if (num[i] % 2 == 0 && num[i] > num[0]){max = num[i];}}cout << "最大偶数为" << max << "\n";if(num[i] % 2 != 0){cout << "未发现偶数" << "\0";}system("pause");return 0;
}

求平均最大值/最小值

#include <iostream>
using namespace std;
int main()
{int i, Ave, Min, Max;int data[8] = { 0,112,43,78,-11,-6,7,9 };Ave = 0;for (i = 0; i < 8; i++)//********error********Ave += data[i];Ave /= 8;cout << "平均值为: " << Ave << endl;Max = Min = data[0];for (i = 0; i < 8; i++){//********error********if (data[i] > Max) Max = data[i];//********error********if (data[i] < Min) Min = data[i];}cout << "最大值为: " << Max << endl;cout << "最小值为: " << Min << endl;system("pause");return 0;
}

命令行参数

#include<iostream>
using namespace std;//工程属性/调试/命令行参数
int main(int argc, char*argv[])//字符数组本质是指针 所以char* *argv也可以
{cout << argc << endl;/*cout << argv[0] << endl;//得到自己的路径cout << argv[1] << endl;cout << argv[2] << endl;*/for (int i = 0; i < argc; i++){cout << argv[i] << endl;}system("pause");return 0;}

malloc函数

#include<iostream>
//malloc头文件为<stdlib.h>和<malloc.h>
//因为是内建函数所以不加也可以
using namespace std;
int main()
{int *p=(int*)malloc(4);//申请4字节的空间大小(int,long型,float,2个short 都是4字节),并强转为int型//double *d;//d=(double*)malloc(8u);//加u后缀表示无符号的8,写不写意义不大,编译器会帮你转换//d=(double*)malloc(sizeof(double));也可以使用sizeof得出空间大小//size_t  == unsigned int;注意32位的编译器环境下4字节,64位的编译器为8字节int c = sizeof(size_t);cout <<"size_t大小为"<< c << endl;int *p1 = (int*)malloc(sizeof(int)*10);//申请10个整形元素的40字节空间for (int i = 0; i < 10; i++){p1[i] = i + 1;cout << p1[i] << endl;//*(p1+i)}memset(p1, 0, 40);cout << "memset赋值后" << endl;for (int i = 0; i < 10; i++){cout << *(p1 + i) << endl;}//p1++;必须释放首地址否则崩溃free(p1);//释放空间归还给操作系统,只可free一次p1 = NULL;//malloc动态一维数组unsigned int q;int *w;cout << "输入动态数组大小" << endl;scanf_s("%u", &q);w = (int*)malloc(q);free(w);w = NULL;//二维数组指针int(*g)[2][3] = (int(*)[2][3])malloc(sizeof(int) * 2 * 3);int z[2][3];int(*z1)[2][3] = &z;//*g == z;//*z1 == z;(*g)[0][0] = 1;//z[0][0]*( *( (*g)+0)+1) = 2;//z[0][1]*((*g)[0] + 2) = 3;//z[0][2](*g)[1][0] = 4; //z[1][0]*(*((*g) + 1) + 1) = 5; //z[1][1](*g)[1][2] = 8;//z[1][2]//!!!总结://*(p+i)==p[i]//*((*g)+i)==g[i]// *( *((*g)+i)  +j)==g[i][j]//(*g)的小括号一定要加上!!!cout << "打印二维数组6个元素" << endl;for (int i = 0; i < 2; i++){for (int j = 0; j < 3; j++){cout << (*g)[i][j] << endl;}}free(g);g = NULL;system("pause");return 0;}

calloc和realloc函数

#include<iostream>
using namespace std;
int main()
{int *p = (int*)calloc(5, 4);//申请一段空间数组,5个元素,每个元素4字节//calloc申请数组空间内元素的值,默认初始化所有元素为0for (int i = 0; i < 5; i++){cout << p[i] << endl;}size_t a = _msize(p);//调用_msize函数返回(无符号整形)空间大小,参数为空间首地址cout << "申请空间大小为" << a << endl;int *p1 = (int*)realloc(p, 30);//realloc(原空间的首地址,重新分配空间字节大小)//p1==p用p1去接首地址p两者本质一样//如果重新申请的空间太大系统无法分配,系统会选择其他更大的内存空间或者返回NULLa = _msize(p1);cout << "重新申请空间大小为" << a << endl;free(p);free(p1);system("pause");return 0;
}

C语言/C++基础知识代码整理相关推荐

  1. C语言 文件基础知识整理

    C语言文件基础知识 之前学C语言的时候老师讲文件讲的相当潦草,因为大作业的关系现在只能自己重听自学一遍.以下是根据北理工的C语言程序设计mooc的文件单元课件和上课时的补充内容所整理的C语言文件基础知 ...

  2. c语言基础知识pdf下载,C语言主基础知识.pdf

    C语言主基础知识 泰山学院CSDN 俱乐部 C 语言主要基础内容 1.预处理命令 预处理的概念:在编译之前进行的处理.预处理命令以符号"#"开头. 2 .关于#include 在编 ...

  3. 第一章c语言基础知识答案,第一章 C语言的基础知识练习题

    第一章 C语言的基础知识练习题 第一章 C语言的基础知识 第一节 对C语言的初步认识 习题 1. 下列叙述中错误的是 B A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始 ...

  4. Linux——Linux C语言编程基础知识

    源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 通常在gcc后跟一些选项和文件名来使用gcc编译器.gcc 命令的基本用法如下:: gcc [option ...

  5. C语言2011计算机二级c语言考点:c语言的基础知识

    实验二c语言的基础知识 C语言[目的与要求] 1. 掌握c语言数据类型, 熟悉如何定义一个整型.字符型.实型变量, 以及对它们赋值的方法, 理解以上类型数据输出时所用的格式转换符. 2. 学会运用c的 ...

  6. C语言有四种基本常量,第2章-C语言的基础知识.ppt

    第2章-C语言的基础知识.ppt 第二章 编制C程序的基础知识,本章重点内容 2.1 常量与变量 2.2 C语言的基本数据类型 2.3 C语言的常用运算符和表达式,运行程序,第二章 编制C程序的基础知 ...

  7. numeric比较大小 数据库_数据库基础知识个人整理版-强烈推荐

    <数据库基础知识个人整理版-强烈推荐>由会员分享,可在线阅读,更多相关<数据库基础知识个人整理版-强烈推荐(20页珍藏版)>请在人人文库网上搜索. 1.数据库知识要点总结第一章 ...

  8. 南师大考研632c语言,2019南京师范大学外国语言学及应用语言学考研623外国语言文学基础知识与汉语写作与830英语语言学基础知识与翻译考试真题试卷...

    2019南京师范大学外国语言学及应用语言学考研623外国语言文学基础知识与汉语写作与830英语语言学基础知识与翻译考试真题试卷 本复习全析是由仙林南师大考研网依托多年丰富的教学与辅导经验,组织仙林教学 ...

  9. 【基础知识思考整理 】Zero-copy原理理解(用户角度)

    基础知识思考整理 http://blog.csdn.net/aganlengzi/article/details/53332877 关于Zero-Copy的原理.主要参照的是一篇03年的文章[1](L ...

最新文章

  1. layui ajax流加载,layui中流加载layui.flow
  2. 重磅:USNews2021世界大学排行榜出炉!清华首登亚洲第一
  3. RPC简介,及与web service的对比
  4. 刚出道的黑客搞瘫美国!他们一边搞钱一边捐款给慈善组织,还说俄国人不打俄国人...
  5. linux shell 提取txt文件到数组
  6. springboot自动配置流程
  7. php如何取消bak自动备份_教你如何进行异地自动备份数据库
  8. 查看自己电脑可以支持的最大内存量
  9. matlab思考,关于Matlab编程的思考(待续)
  10. enumerateObjectsUsingBlock 、for 、for(... in ...) 的区别 性能测试
  11. 从java 转到 c# 知识点
  12. python day - 19 抽象类 接口类 多态 封装
  13. html5画电池状态,JavaScript里获取电池状态的方法
  14. ANTLR实现的SQL解析器 - OQL
  15. 《Java程序设计》在线课程使用说明-2021版
  16. Java String类型入门 String str= abc god 中国 java反转每个单词
  17. xshell .swp文件
  18. vue拖拽指令之offsetX、clientX、pageX、screenX
  19. linux 安装qt5和qtcreator开发工具
  20. Python 实现 双人五子棋对局

热门文章

  1. 5显示日志_如何在 Linux 中管理日志 | Linux 中国
  2. python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
  3. centos操作系统版本获取
  4. python干货_Python干货整理,从入门说起(7.4)
  5. 10 Golden rules for publishing your blog
  6. 新编译的GDAL1.9 C/C++ C# Python版本
  7. JavaWeb——response与request
  8. 推荐21个顶级的Vue UI库!
  9. 小程序uniapp基础
  10. 如何打开php格式文件_如何打开php文件?