1    基本数据类型

C/C++语言中的基本数据类型及其属性如下表所示:

类型

取值范围

大致范围

整形

int

-2147483648 ~ +2147483647

(即-231 ~ +(231-1))

-2*109 ~ +2*109

long long

-263 ~ +263-1

-9*1018 ~ +9*1018

浮点型

float

-2128 ~ +2128  (实际精度6~7位)

实际精度6~7位

double

-21024 ~ +21024  (实际精度15~16位)

实际精度15~16位

字符型

char

-128 ~ +127

-128 ~ +127

布尔型

bool

0(false) or 1(true)

0(false) or 1(true)

2    常量

在C/C++语言中,常量有两种表示方式,分别是:符号常量和const常量。

(1)符号常量:

#define PI 3.14159

(2)const常量:

const double PI = 3.14159;

注意:以上两种方法,都是写在.c/.cpp文件中,方法外部的,一个详细示例如下:

#include <stdio.h>
#define PI 3.14 //const double PI = 3.14;
int main() { …… }

在PAT、ACM等算法比赛中,建议使用const方法。

3    位运算符

C/C++语言中,位运算符有六种,分别是:左移、右移、位与、位或、位异或、位取反。六种位运算符的详细特性和用法如下表所示。

运算符

含义

语法

效果

<<

左移

a << x

整数a按二进制左移x位

>>

右移

a >> x

整数a按二进制右移x位

&

位与

a & b

整数a和b按二进制对齐,按位进行与运算(除了11得1,其他均为0)

|

位或

a | b

整数a和b按二进制对齐,按位进行或运算(除了00得0,其他均为1)

^

位异或

a ^ b

整数a和b按二进制对齐,按位进行异或运算(相同为0,不同为1)

~

位取反

~a

整数a的二进制的每一位进行0变1、1变0的操作

4    输入输出

(1)C++语言中的输入输出方式为:cin、cout。

cin、cout的操作不需要关注输入或输出数据的类型。

(2)C语言中的输入输出方式为:scanf()、printf()。

scanf()、printf()的操作需要关注输入或输出数据的类型。对于不同的数据,都需要特定的占位符,才能进行输入或输出。常见几种数据类型在输入、输出时的特征如下表所示。

数据类型

占位符

输入举例

输出举例

int

%d

scanf(“%d”, &n);

printf(“%d”, n);

long long

%lld

scanf(“%lld”, &n);

printf (“%lld”, n);

float

%f

scanf(“%f”, &f);

printf (“%f”, f);

double

%lf

scanf(“%lf”, &d);

printf (“%lf”, d);

char

%c

scanf(“%c”, &c);

printf (“%c”, c);

字符串(char数组)

%s

scanf(“%s”, s);

printf (“%s”, s);

其他输出格式:

(1)%md:可以使%d输出的值占m位,贴右侧对齐,不足m位的前面补空格,超出m位的正常显示。

(2)%-md:可以使%d输出的值占m位,贴左侧对齐,超出m位的正常显示。

(3)%0md:可以使%d输出的值占m位,贴右侧对齐,不足m位的前面补0,超出m位的正常显示。

(4)%.mf:可以使%f输出的值具有m位小数位,不足的补0,超出的四舍五入。

getchar()、putchar()、gets()和puts():

getchar()用来获取用户输入的下一个字符;putchar()用来打印一个字符。其用法如下:

char c;
c = getchar();
putchar(c);

gets()用来获取用户输入的下一个字符串;puts()用来打印一个字符串。其用法如下:

char str1[];
char str2[][];
gets(str1);
gets(str2[]);
puts(str1);
puts(str2[]);

5    typedef

typedef关键字用来给复杂的数据类型起别名。其用法如下:

#include <stdio.h>
typedef long long LL;
int main(){ LL ll; …… }

6    math.h

math.h是C语言中的数学方法库,使用之前需要先导入这个头文件:#include <math.h>。math方法库中的部分方法及其用法如下:

(1)fabs(double x):该方法用于对double型变量取绝对值。

(2)floor(double x):该方法用于求小于x的最大的整数(对x向下取整)。

(3)ceil(double x):该方法用于求大于x的最小的整数(对x向上取整)。

(4)pow(double r, double p):该方法用于求r的p次方(r和p必须都是double类型)。

(5)sqrt(double x):该方法用于求x的开平方值。

(6)sin(double x):该方法用于求x的正弦值,如45°的正弦值求法为:sin(PI*45/180)。

(7)round(double x):该方法用于求x的四舍五入的值。

7    string.h

string.h是C语言中的字符串方法库,使用之前需要先导入这个头文件:#include <string.h>。string.h方法库中部分方法及其用法如下:

(1)strlen(char[] c):返回字符数组c的长度。

(2)strcmp(char[] c1, char[] c2):比较c1和c2,返回它们的大小比较,1表示c1比c2大,0表示c1和c2一样大,-1表示c1比c2小。

(3)strcpy(char[] c1, char[] c2):将c2中的内容复制到c1中。

(4)strcat(char[] c1, char[] c2):将c2中的内容追加到c1内容的后面。

8    指针和引用

1、指针:

(1)定义一个指针变量:int* a;

(2)获取某个变量的指针:int* p = &a;

(3)获取某个指针变量指向的变量:int a = *p;

(4)获取数组a中的第i个元素:int ai = *(a + i);

2、引用:

(1)对于如下代码:

void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = , b = ;
swap(a, b);
printf(“%d,%d”, a, b);
return ;
}

对于上面的代码,输出的a和b仍然是1和2,这是因为在C语言中,传入函数的参数都是原来参数的副本,修改副本的值对原值是没有作用的。

为了解决这个问题,可以使用的方法有两种,分别是使用指针和引用。

1)使用指针,代码如下:

void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = , b = ;
int* p1 = &a, *p2 = &b;
swap(p1, p2);
printf(“%d,%d”, a, b);
return ;
}

2)使用引用,代码如下:

void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = , b = ;
swap(a, b);
printf(“%d,%d”, a, b);
return ;
}

通过上面的代码对比可以看出,C语言中的引用可以将原变量传递到函数中去。

9    结构体

1、声明结构体,代码如下:

struct User {
int id;
char gender;
char name[];
} Alice, stu[], *p;

2、创建结构体对象,代码如下:

User Alice;
User stu[];
User *p;
// 注:如果在声明结构体的时候定义了对象名称,如上1中的Alice等,则不需要再创建对象

3、调用结构体对象中的属性,代码如下:

(1)结构体对象不是指针变量:

Alice.id = ;
stu[].gender = ‘f’;

(2)结构体对象是指针变量:

(*p).id = ;
(*p).name = “zhangsan”;
// 或
p->id = ;
p->name = “zhangsan”;

4、为结构体创建构造函数:

struct Point {
double x;
double y;
Point() {}
Point(double _x, double _y) {
x = _x;
y = _y;
}
}
int main() {
Point p = Point(, );
}

【C/C++】之C/C++快速入门的更多相关文章

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  3. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  10. Vue.js 快速入门

    什么是Vue.js vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API.作者是尤雨溪,写下这篇文章时vue.js版本为1.0.7 准备 我推荐 ...

随机推荐

  1. 简要概括java技术体系

    以前一直在学java程序设计语言,学完了就以为自己已经把java学得差不多了,直到最近在看一本书<深入理解java虚拟机>,才发现自己以前学的只不过是冰山一角.相信很多小伙伴跟我一样,在没 ...

  2. mac os 10.15 virtualBox6.0.12崩溃

    VBoxManage setextradata global GUI/HidLedsSync 0 参考:https://www.virtualbox.org/ticket/18990

  3. 在虚拟机上的关于FTP FTP访问模式(虚拟用户模式)

    首先你要有vsftpd服务 可以先去yum中下载(当然你要有本地yum仓库) 输入命令: yum  install  vsftpd 下载完成之后打开vsftpd服务 输入命令:systemctl   ...

  4. 读书笔记-《Maven实战》-2018/5/3

    5.7依赖调解 1.当一个项目有以下依赖关系的时候:A->B->C->X(1.0).A->D->X(2.0),X作为A的传递依赖而拥有两个版本,Maven为了解决以上问题 ...

  5. 【51nod 1251】 Fox序列的数量(以及带限制插板法讲解)

    为什么网上没有篇详细的题解[雾 可能各位聚聚觉得这道题太简单了吧 /kk 题意 首先题目是求满足条件的序列个数,条件为:出现次数最多的数仅有一个 分析 感谢 刚睡醒的 JZ姐姐在咱写题解忽然陷入自闭的 ...

  6. TCP/IP协议第一卷第一章

    1.链路层 链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节.把链路层地址和网络层地址联系起来 ...

  7. Laravel用户认证

    前期准备 Laravel的权限配置文件位于 config/auth.php,Laravel的认证组件由"guards"和"providers"组成, Guard ...

  8. 八、springboot 简单优雅的通过docker-compose 构建

    前言 这个项目有一段时间没有更新了,不过我可没有偷懒哟,是偷偷准备了一个大招,现在是时候展示啦哈哈. 我们今天要做的,就是将我们的项目通过docker-compose 构建成镜像运行.为什么要这样做呢 ...

  9. PHP yaf显示错误提示

    PHP yaf显示错误提示 1就是配置文件的那个错误 <pre>error_reporting(E_ALL);</pre> 2init.php文件的<pre>fun ...

  10. day7-format字符串格式化

    tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18) print ...