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. 卷积神经网络详细讲解 及 Tensorflow实现

    [附上个人git完整代码地址:https://github.com/Liuyubao/Tensorflow-CNN] [如有疑问,更进一步交流请留言或联系微信:523331232] Reference ...

  2. Android应用程序权限说明

    1.声明运行该应用本身所需要的权限 <!-- 声明该应用本身需要打电话的权限 --> <users-permission androd:name="android:perm ...

  3. Java设计模式:23种设计模式

    1. 软件设计模式概述 2. GoF 的 23 种设计模式的分类和功能 3. UML中的类图及类图之间的关系 4. 开闭原则——面向对象设计原则 5. 里氏替换原则——面向对象设计原则 6. 依赖倒置 ...

  4. 【ARC064-F】【XSY2575】Rotated Palindromes(DP)(字符串)

    Description 然而,由于小C沉迷于制作游戏,他完全忘记了自己作为国家集训队的一员,还有156道作业题等他完成.还有一天作业就要截止了,而他一题还没有做.于是他赶紧挑了一道看起来最简单的题: ...

  5. 使用position设置经典的网站前端结构

    能脱离文档流的设置: float:left/right position:absolute; 绝对定位 position:fixed; 固定定位 //搞清楚position的属性值的意思就容易明白 使 ...

  6. Vue项目中执行npm run dev 不报错也不显示点击的地址链接

    问题描述: 输入npm run dev 没有报错也没有显示可以点击的地址链接,如下图: 解决方法: 具体配置: autoOpenBrowser默认为false,改为true.重新 npm run de ...

  7. NOIP模拟赛 华容道 (搜索和最短路)蒟蒻的第一道紫题

    题目描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 B 玩的华容道 ...

  8. 七月月赛T1

    题目背景 借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了! 题目描述 现有 2^n\times 2^n (n\le10)2n×2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 ...

  9. MapReduce 人个理解

    1.MapReduce 理解 拆分成 map 过程与 reduce 过程: map 可以理解为sql 中的 group by 操作, reduce相当于group by 后的聚合计算 : 一个map ...

  10. Android 开发中是否应该使用枚举?

    本文由咕咚发布在个人博客,转载请注明出处. 本文永久地址:https://gudong.name/2019/11/04/use-enum-or-not.html 在 Android 官方文档推出性能优 ...