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. DRF之注册器、响应器、分页器

    一.url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入模块 1 from rest_f ...

  2. JVM垃圾收集策略与算法

    垃圾收集策略与算法 程序计数器.虚拟机栈.本地方法栈随线程而生,也随线程而灭:栈帧随着方法的开始而入栈,随着方法的结束而出栈.这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的 ...

  3. 百度地图Javascript API 调用示例

    调用示例 !<!DOCTYPE html> <html> <head> <title>百度地图DEMO</title> </head& ...

  4. 通俗易懂了解Vue的计算属性

    1.前言 之前在学习vue的过程中,一直没有搞明白计算属性是个怎么回事,以及为什么要有计算属性,使用计算属性有什么好处.今天花时间翻了翻官方文档,才搞清楚其中一二,现将学习心得总结记录如下. 2.为什 ...

  5. 二、安装JDK - Java软件的安装

    jdk是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. 1.安装包的下载:http://pan.baidu.com/s/1mgh58ve (该安装包是绿色的,解压 ...

  6. 双十一还在盖楼?少年你应该掌握Docker 部署 Consul了

    ▶ Spring Boot 依赖与配置 Maven 依赖 <dependencyManagement> <dependencies> <dependency> &l ...

  7. php debug_backtrace方法跟踪代码调用

    php debug_backtrace方法跟踪代码调用<pre>function string 当前的函数名,参见: __FUNCTION__.line integer 当前的行号.参见: ...

  8. javascript监听手机返回键

    javascript监听手机返回键 <pre> if (window.history && window.history.pushState) { $(window).on ...

  9. DEX文件解析---1、dex文件头解析

    DEX文件解析---1.dex文件头解析 一.dex文件     dex文件是Android平台上可执行文件的一种文件类型.它的文件格式可以下面这张图概括:     dex文件头一般固定为0x70个字 ...

  10. Apache安装问题:APR not found

    资料来源:Apache遇到的问题:APR not found 安装apache时出现arp错误问题 按照以上文章试验之后整理如下: #./configure --prefix……检查编辑环境时出现: ...