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. 第三十一章 System V信号量(二)

    用信号量实现进程互斥示例 #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #inclu ...

  2. Java 干货之深入理解Java内部类

    可以将一个类定义在另一个类或方法中,这样的类叫做内部类 --<Thinking in Java> 说起内部类,大家并不陌生,并且会经常在实例化容器的时候使用到它.但是内部类的具体细节语法, ...

  3. NOIP原题 斗地主(20190804)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...

  4. Linux的组管理和权限管理

    前言 前面的文章中提到:Linux在管理用户权限时,既是面向用户的,又是面向组的,通过管理用户的权限规定了其对所拥有的文件的权限(读.改.执行),通过管理组的权限而规定了该组中用户对于某一文件的权限. ...

  5. jquery鼠标点击穿透的解决方法

    jquery鼠标点击穿透的解决方法 <pre><div class="showcontainer" style="background:#000;dis ...

  6. ASP.NET Core 3.0 gRPC 身份认证和授权

    一.开头聊骚 本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文.本文主要讲 ASP.NET Core 本身的认证授权和gRPC接 ...

  7. OFFICE 2010 每次打开提示安装的问题

    OFFICE2010 安装后每次打开 文件总是提示配置 解决办法: 前提是office已经激活 注册表找到 HKEY_CURRENT_USER\Software\Microsoft\Office\14 ...

  8. lqb 入门训练 Fibonacci数列 (循环 PS:提柜要栈溢出)

    入门训练 Fibonacci数列 时间限制:1.0s   内存限制:256.0MB     问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时, ...

  9. nyoj 92-图像有用区域 (BFS)

    92-图像有用区域 内存限制:64MB 时间限制:3000ms 特判: No 通过数:4 提交数:12 难度:4 题目描述: “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取 ...

  10. 高质量App的架构设计与思考!

    最近在做一功能不大.业务也不复杂的小众App,以往做App是发现自己从来没有考虑过一些架构方面的问题,只是按照自己以往的习惯去写代码,忽略了App的设计.本次分享主要包含一些开发App的小经验和技巧, ...