美文网首页C++, C, NDK
1.【干货】火爆全网的《超全C精品教程一》c基础关键字(cons

1.【干货】火爆全网的《超全C精品教程一》c基础关键字(cons

作者: 鹏城十八少 | 来源:发表于2023-03-02 21:38 被阅读0次

C++编译工具:

Mac OS X 上的安装

如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。

1.typedef 声明

您可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:

typedef type newname;

例如,下面的语句会告诉编译器,feet 是 int 的另一个名称:

typedef int feet;

现在,下面的声明是完全合法的,它创建了一个整型变量 distance:

feet distance;

1.extern 存储类

extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 'extern' 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置

// 变量声明

extern int a, b

1. 变量从上往下进行查找,如果放在下面,编译不同过

可以在一个文件中引用另一个文件中定义的变量或者函

如果我不想改变num的声明的位置,但是想在main函数中直接使用num这个变量,怎么办呢?可以使用extern这个关键字。

2.  引用另一个文件中的变量

extern这个关键字的真正的作用是引用不在同一个文件中的变量或者函数。

总结:

extern 关键字实质上是声明,别的地方必须实现定义。

extern关键字只需要指明类型和变量名就行了,不能再重新赋值,初始化需要在声明处进行,像这种写法是不行的。

可以修饰变量,也可以修饰函数! 

注:所有的包含C代码的方法都必须版含在extern "C"{}中

extern 和 static区别:

extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量.

static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面.

extern“C”作用:

extern "C"的目的就是主要实现C与C++的相互调用问题

https://www.cnblogs.com/markzhuqian/p/14461696.html

2.const关键字的作用

常量const==java中的final

在 C++ 中,有两种简单的定义常量的方式:

使用 #define 预处理器。

使用 const 关键字。

在c里面,指针不是常量,可以修改. 但是c++里面是常量

c++中不能通过地址修改值,但是c中是可以修改

用const定义的目标只能称为(只读)变量,所以不能说"const定义的常量"

存放在内存的哪个区域????

1). 变量中用const

2).  常用到const函数中将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,表明在该成员函数中不能对类的任何成员进行修改。

3).常量指针

常量指针.(常量指针和厂里之中的区别)

4).常量引用

5). 拷贝构造函数中用到const

jni常量指针和指针常量区别(const)

https://blog.csdn.net/qq_36132127/article/details/81940015

使用场景: 我传入一个指针, 但是我不想你把指针修改了,所以我就定义一个常量指针! 

指针常量——指针类型的常量(int *const p, 哪个在前面)

本质上一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。在定义的同时必须初始化。用法如下

int a = 10, b = 20;

int * const p = &a;

*p = 30; // p指向的地址是一定的,但其内容可以修改

常量指针——指向“常量”的指针(const int *p, int const *p)

常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。用法如下:

int a = 10, b = 20;

const int *p = &a;

p = &b; // 指针可以指向其他地址,但是内容不可以改变

总结: 看最后2个字,可以变的也是最后2个!

const 修饰函数

onst 在 () 之后主要用来限制 this 关键字,this 的值和地址都不能修改

    // this = const Student* const this

    // 第一个 const : 常量指针, 代表值不能修改

    // 第二个 const : 指针常量,代表指针的地址不能修改

    void change() const { // const 在 () 之后主要用来限制 this 关键字

        // this->age + = 12;

        // this = (Student)0x0012;

    }

3.  strcpy()方法的使用

如果右边的值,不能赋给左边, 那么可以通过这个拷贝的形式! 

demo举例: 

// char title[50] 类型,相当于java中的string

strcpy(book1.title,"book1标题");

strcpy(book1.autohor,"book1作者");

strcpy(book1.subject,"book1subject");

// 这个方法只用于字符串,不能用于int

// strcpy(book1.book_id,3);

book1.book_id=1;

4.在C语言中,关系运算和逻辑运算的结果有两种,真和假:0 表示假,非 0 表示真。例如:

在 C++ 中使用 cout 输出 bool 变量的值时还是用数字 1 和 0 表示,而不是 true 或 false

java 这么是编译不过, 但是c++可以编译通过

private int start(){

return -1>0;

}

5.inline内联函数(耗时小的地方用)

执行<<<调用: 就用内联函数

当函数比较复杂时,函数调用的时空开销可以忽略,大部分的 CPU 时间都会花费在执行函数体代码上,所以我们一般是将非常短小的函数声明为内联函数

使用内联函数的缺点也是非常明显的,编译后的程序会存在多份相同的函数拷贝,如果被声明为内联函数的函数体非常大,那么编译后的程序体积也将会变得很大,所以再次强调,一般只将那些短小的、频繁调用的函数声明为内联函数。

在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符

2. 打印: 流插入运算符! 

//从控制台获取用户输入

cin>>str>>age;

//将数据输出到控制台

cout<<str<<"已经成立"<<age<<"年了!"<<endl;

C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。

流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。

命名空间: using namespace std;相当于java中的内部类

using namespace std;

cout << "Hello World"; // 输出 Hello World

https://blog.csdn.net/m0_62599305/article/details/122789156

6. 默认函数参数: 

默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式。在以后设计类时你将发现,通过使用默认参数,可以减少要定义的析构函数、方法以及方法重载的数量。

7. 可变参数

java里面是...

java中:int ...

c++:...

h文件的方法决定c里面的调用方法

3.宏定义

7. 容器

容器分类    类名    概要

顺序容器    array    不支持动态扩容,采用数组的数据结构进行数据存储

顺序容器    vector    支持动态扩容,采用数组的数据结构进行数据存储

顺序容器    list    支持动态扩容,采用链表的数据结构进行数据存储

关联容器    set    默认按照value进行升序排序,值唯一。二叉树数据结构

关联容器    map    默认按照key进行升序排序,key唯一。二叉树数据结构

关联容器    multiset    默认按照value进行升序排序,值不唯一。二叉树数据结构

关联容器    multimap    默认按照key进行升序排序,key不唯一。二叉树数据结构

无序关联容器    unordered_set    对应容器的无序版本。哈希表数据结构

无序关联容器    unordered_map    对应容器的无序版本。哈希表数据结构

无序关联容器    unordered_multiset    对应容器的无序版本。哈希表数据结构

无序关联容器        unordered_multimap

相关文章

  • C语言存储

    参考: C存储类-菜鸟教程C语言register关键字—最快的关键字c primer plus 6th editi...

  • C++基础教程之C/C++区别

    C/C++基础教程之C/C++区别 这是C++教程得第一步,后续会持续更新哦!欢迎新手(具有C基础),老鸟可绕道,...

  • C语言系列教程完整版(持续更新)

    下面是C语言所有完整的教程 C语言教程(一):程序开发理论基础 C语言教程(二):开发环境搭建 C语言教程(三):...

  • C++入门篇

    C语言入门教程,C语言入门书籍《C语言小白变怪兽》_C语言中文网 C++入门教程,全套C++基础教程(已更新完毕)...

  • Objective-C学习笔记

    基于Objective-C基础教程:1天玩转Objective-C语法【C基础】#if、if、#ifdef、#if...

  • 黑马训练营Asp.Net第2期完整版

    初级 .Net入门教程_.Net入门视频教程|黑马程序员 C#基础教程_C#基础视频教程_黑马程序员 .Net基础...

  • Java 语法学习笔记(一)

    Java 基础语法 [toc] 参考教程 菜鸟教程 --- Java 教程 介绍 Java 许多语法跟 C/C++...

  • Winform

    C# WinForm实践开发教程 C# WinForm实践开发教程——第一章 Windows编程基础C# WinF...

  • Go语言入门

    仅为方便查看,搬运一下,也可看原文 1. 简介 本文是关于Go编程语言的基础教程,主要面向有C/C++基础的读者。...

  • 有哪些比较好的 C 语言视频教程推荐?

    全面的C语言教程,可以看黑马程序员C语言教程:轻松掌握C语言视频教程(会打字就能学会);或者是C语言小白入门基础教...

网友评论

    本文标题:1.【干货】火爆全网的《超全C精品教程一》c基础关键字(cons

    本文链接:https://www.haomeiwen.com/subject/pcfsldtx.html