C++常用函数总结

定义数组

//动态定义一维数组
int *p1 ;p1 = new int [row] ;
//输入一维数组的值
for( i = 0 ; i < row ; i ++ )p1[i] = rand () % 10 ;
//输出一维数组
for( i = 0 ; i < row ; i ++ )cout<<p1[i] <<' ' ;
cout<<endl;//动态定义二维数组
int **p2 ;
p2 = new int*[row] ;
for( i = 0 ; i < row ; i ++ )p2[i] = new int[col] ;
//输入二维数组的值
for( i = 0 ; i < row ; i ++ )for( j = 0 ; j < col ; j ++ )p2[i][j] = rand() % 10 ;//动态定义三维数组:
int *** p3 ;
p3 = new int**[hight ] ;
for( i = 0 ; i < hight ; i ++ )p3[i] = new int*[row] ;
for( i = 0 ; i < hight ; i ++ )for( j = 0 ; j < row ; j ++ )p3[i][j] = new int[col] ;//输入三维数组值:for(i = 0 ; i < hight ; i ++ )for(j = 0 ; j < row ; j ++ )for( k = 0 ; k < col ; k ++)p3[i][j][k] = rand()%10 ;

指针

#include <iostream>
using namespace std;void swap1(int p,int q)     //不改变实参的数值
{     int temp;temp = p;p = q ;q = temp;
}void swap2(int *p,int*q)   //编译器会报错
{int *temp;*temp = *p;*p = * q;*q = *temp;
}void swap3(int *p,int *q)    //不会改变实参的数值
{int *temp;temp = p ;p = q;q = temp;
}
void swap4(int *p,int *q)    //改变实参的数值
{int temp;temp = *p;*p = *q;*q = temp;
}
void swap5(int &p,int &q)    //改变实参的数值
{int temp;temp = p;p = q;q = temp;
}
int main(){int a,b;swap1(a,b);//swap2(&a,&b);//swap3(&a,&b);//swap4(&a,&b);//swap5(a,b);
cout<<a<<" "<<"b"<<endl;
return 0;
}

2.swap2(&a,&b)传的是一个地址进去,在函数体内的形参p和q是指向了实际参数a,b的内存地址的指针
要注意!

int *temp;
*temp = *p;


3.swap3(a,b)传的是一个地址过去,与swap2不同的是

*temp = *  p ;//swap2 赋值
temp = p; //swap3 指向
/*swap2和swap3同样都没给temp指针分配内存*不同的是以上这两段代码。temp=p是指向,而不是复制了,temp是指向了p指针所指向的地址,也就是a*/

而代码

p = q;
q = temp;
/*其意思就是指针p指向了指针q所指向的地址,q又指向了指针temp所指向的地址,其实和temp=p是一个意思;
如下图所示


4.swap4,修改了指针所指向的地址中的值

int *temp;
temp = *p;
*p = *q;
*q = temp;

将指针p所指向的地址的值赋值给temp指针所指向的地址,*p=q,就是q指针所指向的地址赋值给指针p所指向的地址中的值,所以指针p所指向的a(地址)中的值就变成了b(b是q指针所指向的地址),同理指针temp所指向的地址就赋值给了q指针所指向的地址中的值,也就是说将最初p指针所指向的地址的值赋值给了q指针所指向的地址的值。没毛病,其实交换的本质就是这样的:最初的p的值要换成q的值,而q的值要换成最初p的值,所以只是将最初p的值给临时保存下来。
5.swap5和swap4是类似的。是一个引用传递,修改的结果直接影响实参。

void swap5(int &p,int &q){
int temp = p;
p = q;
q = temp;
}

所谓的引用传递就是指在调用函数的时候,将实参的地址传递到函数中,那么在函数中对参数所进行的修改,将会影响到实际的参数.将一个变量引用传递给函数,这样该函数就可以修改其参数(变量)的值。因为实参和形参引用了同一个地址,所以如果改变了形参的值,那么实参的值也将会发生变化。

引用传递参数

#include <iostream>
using namespace std;
void swap(int & a,int & b)
{int tmp;tmp=a;a=b;b=tmp;
}
void main()
{int x,y;cout << "请输入x" << endl;cin >> x;cout << "请输入y" << endl;cin >> y;   cout<<"通过引用交换x和y"<<endl;swap(x,y);cout << "x=" << x <<endl;cout << "y=" << y <<endl;
}

运行结果1
指针传递参数

  #include <iostream>using std::cout;using std::endl;using std::cin;swap(int *a,int *b){int tmp;tmp=*a;*a=*b;*b=tmp;}void main(){int x,y;int *p_x,*p_y;cout << " input two number " << endl;cin >> x;cin >> y;p_x=&x;p_y=&y;if(x<y)swap(p_x,p_y);cout << "x=" << x <<endl;cout << "y=" << y <<endl;}

运行结果如下
C++函数调用分析

#include <stdio.h>int func(int param1 ,int param2,int param3)
{int var1 = param1;int var2 = param2;int var3 = param3;printf("var1=%d,var2=%d,var3=%d",var1,var2,var3);return var1;
}int main(int argc, char* argv[])
{int result = func(1,2,3);return 0;
}


二进制进行移位(十六进制也可以)

char 8位
short int 16位
char a,b;
short int c;
a = 10; b= 3;
c = a;
c <<= 8;
c &=b;
// a = 1111,b=0011
//c = 1111 0000 =>1111 0011

如果一个函数需要返回多个参数,可以采用以下两种方法:
第一种方法是将返回值作为写参数。

#include <iostream>
#include <string>
using namespace std;void fun(int &a, char &b, string &c)
{a = 1;b = 'b';c = "test";
}int main()
{int a;char b;string c;fun(a,b,c);cout << a << " " << b << " " << c << endl;
}

第二种方法是定义一个结构,返回指向该结构的指针。

#include <iostream>
#include <string>
using namespace std;struct result
{int a;char b;string c;
};result * fun()
{result *test=new result;test->a = 1;test->b = 'b';test->c = "test";return test;
}int main()
{result *test;test=fun();cout << test->a << " " << test->b << " " << test->c << endl;delete test;return 1;

switch和case语句:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);switch(a){case 1: printf("Monday\n"); break;case 2: printf("Tuesday\n"); break;case 3: printf("Wednesday\n"); break;case 4: printf("Thursday\n"); break;case 5: printf("Friday\n"); break;case 6: printf("Saturday\n"); break;case 7: printf("Sunday\n"); break;default:printf("error\n"); break;}return 0;
}

printf()函数中的格式串格式为:
[标志][输出最小宽度][.精度]类型。 其中:方括号[]中的项为可选项。

  1. 类型
    类型字符用以表示输出数据的类型

    d 以十进制形式输出带符号整数(正数不输出符号)
    o 以八进制形式输出无符号整数(不输出前缀0)
    x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
    u 以十进制形式输出无符号整数
    f 以小数形式输出单、双精度实数
    e,E 以指数形式输出单、双精度实数
    g,G 以%f或%e中较短的输出宽度输出单、双精度实数
    c 输出单个字符
    s 输出字符串

2)标志
标志字符为 -、+、#

   -    结果左对齐,右边填空格+   输出符号(正号或负号)#对o类,在输出时加前缀o;       对x类,在输出时加前缀0x;
  1. 输出最小宽度
    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时)。
  2. 精度
    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

综合以上,可以看出,%04x 表示按16进制输出数据,最小输出宽度为4个字符,右对齐,如果输出的数据小于4个字符,前补0,如:

printf("%04x", 100 ); //输出0064       100的16进制数是64

//STM32单片机中参考例文

wf =(ww * 4096 + mm * 256+ uu * 16 + vv) / 256.0;
sprintf((char*)shou,"%0.3f",wf);
LCD_Fill(230,310,430,326,WHITE);
LCD_ShowString(230,310,200,16,16,shou);

ubuntu下如何运行c++

用下面的命令运行该first.cpp文件:
g++ first.cpp -o test
./test

windows下VS2015运行c

https://www.cnblogs.com/yankyblogs/p/7058036.html

参考文献:
向以下文章发布者表示感谢

返回多个值:https://blog.csdn.net/onlyou2030/article/details/48174461
函数调用:https://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601204.html
二进制十六进制移位:https://bbs.csdn.net/topics/392005545?_u_u_u=0.4370113343466073
指针传递动态参数:https://blog.csdn.net/sinat_35803474/article/details/76686061

C/C++常用函数总结以及在ubuntu和vs中运行相关推荐

  1. excel函数提取计算机登录名,EXCEL常用函数应用实例:如何提取姓名中的姓

    Excel函数一共有11类,分别是数据库函数.日期与时间函数.工程函数.财务函数.信息函数.逻辑函数.查询和引用函数.数学和三角函数.统计函数.文本函数以及用户自定义函数.对于很多人来说,并不需掌握深 ...

  2. linux bash函数里面调用命令行,Linux-在gnome-terminal -x中运行bash函数

    您可以将其与export -f一起使用,就像@kojiro的上面的注释中指出的那样. # Define function. my_func() { // Do cool stuff } # Expor ...

  3. (转)postgis常用函数介绍(一)

    http://blog.csdn.net/gisshixisheng/article/details/47701237 概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,po ...

  4. [转载] NumPy 基本操作(ndarray通用函数 / 常用函数)

    参考链接: Python中的numpy.cosh ndarray通用函数 / 常用函数 一.ufunc:numpy 模块中对 ndarray 中数据进行快速元素级运算的函数,也可以看做是简单的函数(接 ...

  5. C/C++调用java---JNI常用函数

    C/C++调用java---JNI常用函数 从原始类数据的缓冲区中加载类.         参数:         env:JNI 接口指针.         loader:分派给所定义的类的类加载器 ...

  6. Python常用函数及常用库整理

    简单整理一下一些常用函数,方便自己查阅. 目录 文件操作 文件夹/目录 文件 数据格式 链表 类 特殊函数 一些常用函数 常用库 tqdm进度条库 tqdm模块参数说明 常用函数使用方法 yacs参数 ...

  7. oracle中常用关键字,oracle常用函数及关键字笔记

    --函数及关键字-- 1.trim,ltrim,rtrim 去除字符,无指定默认去除空格 SELECT TRIM('a' FROM 'aafhfhaaaaaaaa'), LTRIM('aafhfhaa ...

  8. Python 的列表运算和列表常用函数

    Python 的列表运算和常用函数 1. 列表的运算 1.1 列表相加 1.2. 列表相乘 1.3. None.空列表和初始化 1.4. 列表的比较 1.5. 运算符 in 2. 列表的常用函数 1. ...

  9. mysql中常用函数与存储过程的创建

    mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...

最新文章

  1. 活动报名|“悟道之巅:AI创新应用大赛”发布会——体验未来技术,赢取百万奖金...
  2. 2018刑侦推理 java_2018年刑侦科目推理试题
  3. C语言字符5,C语言编程(练习5:字符串与字符串函数)-Go语言中文社区
  4. Win11系统如何恢复隐藏文件
  5. 机器学习实战6-sklearn训练决策树实现分类和回归
  6. Go源码里的 //go: 指令集眼熟嘛?都是干嘛的?
  7. 中国塑料瓶和容器市场趋势报告、技术动态创新及市场预测
  8. Comparable与Comparator对比
  9. Set,Map数据结构
  10. 鸿蒙系统在哪里,“安卓系统”和“鸿蒙系统”区别在哪里?网友:根本就是一个天上一个地下...
  11. Vue实现打印机接口打印组件
  12. 安装VMware15.5+安装win10虚拟机操作系统(非常详细)
  13. matlab影像阿伯斯投影,D3.js 世界地图(一)投影方式
  14. Java MD5 加密工具类 生成32位加密码值
  15. 墨画子卿第一章第9节:指教
  16. 护眼色RGB值和HSV值
  17. Spring Boot(二):整合 JPA 及 事务控制
  18. gif一键抠图 在线_一款支持智能抠图、钢笔抠图的在线抠图工具上线了 速抠图 sukoutu.com...
  19. 下载网易云音乐的MV
  20. OpenCV | 直线拟合fitline函数(Python)

热门文章

  1. 氧含量测量方法:燃料电池法
  2. Text to face:寻找黛玉-从语言描述到人脸图像生成
  3. Scaner和顺序语句
  4. 全球及中国玄武岩纤维市场竞争格局分析及发展前景预测报告2022-2028年版
  5. Hadoop2.x与Hadoop3.x的默认端口变化
  6. 互联网营销的技巧方法和套路!
  7. Java实战干货分享
  8. PTA乙级 1068 万绿丛中一点红——20分
  9. word批注怎么删除计算机名字,【2人回答】Word批注中的名字怎么删除?-3D溜溜网...
  10. 论文阅读—图像分割方法综述(三)(arXiv:[cs:cv]20200410)