const

Go语言常量与变量初识

大兔子大兔子 提交于 2020-03-16 00:25:38
标识符和关键字 标识符 标识符只能以字母和 _ 组成,并且只能以字母和 _ 开头。 关键字 Go中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 变量 变量声明 变量需要先声明,再使用。其语法如下: var name string 其数据类型有: string,字符串 int,整型 bool,布尔型 上面这种是一个变量一个变量的声明,go也有批量声明方式: var ( name string age int isBoy bool ) 变量的初始化: func main(){ name = "joker" age = 18 isBoy = true } 注意: Go语言中非全局变量声明了必须使用,不使用则编译不过去。 变量还可以声明的同时并赋值: var name string = "Joker" 也可以根据值来判断变量是什么类型: var age = 14 还可以用简短变量声明(只能在函数体里使用): name := "Joker" fmt.Print(name) 匿名变量 匿名变量不占用命名空间

标准C++中的string类的用法总结

岁酱吖の 提交于 2020-03-15 22:02:48
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧! 要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍: string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); /

标准C++中的string类的用法总结

心不动则不痛 提交于 2020-03-15 22:02:30
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果 离开了MFC框架,还有没有这样使用起来非常方便的类呢?是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操 作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大 的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧! 要想使用标准C++中string类,必须要包含 #include // 注意是,不是,带.h的是C语言中的头文件 using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍: string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1

嵌入式开发之C基础学习笔记06--数组和指针(非常重要,难点)

非 Y 不嫁゛ 提交于 2020-03-15 21:50:14
C语言进阶学习 数组 1)数组的使用 2)字符串(String):数组(尤其是一维数组)最常用的地方——————>C语言中字符串就是一维数组 数组: 定义:具有相同类型的数据的有序集合,并用唯一的名字来标识。 1)数组必须直接声明,编译器在编译阶段为其分配内存空间 2)C89数组必须是定长的,数组的大小在编译时是固定的;C99允许使用变长数组,数组的大小在运行时确定 void f(int longeur,int wide) { int matrix[longeur][wide];/*定义一个矩阵*/ /*数组的长度由两个参数决定*/ } 3)数组的所有元素占连续的内存空间,在内存中是线性(顺序)存放的,保存数组所需要的内存空间直接与基本类型和数组长度有关。 数组占用的内存空间 = sizeof(基类型)*数组长度 4)C不检查数组是否越界,程序可以在两边越界。程序员应自己加入越界检查。数组可以越界使用,但是初始化时不允许! 5)向函数传递数组: 定义数组形参的方法有三种:指针,定长数组,无尺寸数组 void func1(int *a){...} void func2(int a[10]){...} void func3(int a[]){...} 在函数的形参的声明中,数组尺寸无所谓,因为C语言没有边界检查 实际上,第二种方法在编译后,编译器产生的代码就是让函数接受指针

c语言qsort的使用

孤街醉人 提交于 2020-03-15 20:41:47
目的 基于快速排序对数组进行排序,数组元素可以是结构体。 前提 qsort属于内置函数,需要包含头文件 stdlib.h 函数原型 void qsort( void *ptr, size_t count, size_t size,int (*comp)(const void *, const void *) ); /** void *ptr:空指针, 指向需要排序的数组 size_t count:数组元素个数,size_t在32位机器上unsigned int(4byte),64位机器上unsigned long(8byte) size:数组元素的字节数大小,通常用sizeof()来计算,平台不同,同一类型的变量占据的字节数可能不用,增强可移植性 int (*comp)(const void *, const void *) : 函数指针,将函数名作为参数,该函数的形参的类型均为const void *,函数外表是一样的,内容却有所不同,返回值类型相同 **/ 用户自定义函数 指明具体的比较对象 int cmp(const void *a, const void *b); // 自定义函数内容,若果a值大于b值,返回1, { /** 在函数内部将const void* 转换成实际的类型; **/ //默认升序写法 if ( *(MyType*)a < *(MyType*)b )

C语言字符串

本秂侑毒 提交于 2020-03-15 18:00:54
目录 一、字符串的概念 二、占用内存的情况 三、字符串的初始化 四、字符串与指针 五、字符串的结尾标志 六、字符串的输出 七、字符串越界 八、字符串常用的库函数 1、获取字符串的长度(strlen) 2、字符串复制或赋值(strcpy) 3、字符串复制或赋值(strncpy) 4、字符串拼接(strcat) 5、字符串拼接(strncat) 6、字符串比较(strcmp、strncmp) 7、字符查找(strchr、strrchr) 8、字符串查找(strstr) 九、应用经验 1、留有余地 2、变量初始化 3、位置(地址)偏移的用法 4、不要在子函数中对字符指针用sizeof 十、课后作业 十一、版权声明 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串。 因为字符串需要用\0结尾,所以在定义字符串的时候,字符数组的长度要预留多一个字节用来存放\0,\0就是数字0。这是约定。 char strname[21]; // 定义一个最多存放20个英文字符或十个中文的字符串 字符串也可以存放中文和全角的标点符号

go 常量定义和使用

跟風遠走 提交于 2020-03-15 17:26:34
常量的定义与变量类似,只不过使用 const 关键字。 常量可以是字符、字符串、布尔或数字类型的值。 常量不能使用 := 语法定义。 常量必须定义时赋值,不能多次赋值 package main import "fmt" const PI = 3.1415926 const ErrorCode = "001" const SuccessCode = "200" const Open = true const Close = false func main() { const state = "success" fmt.Println(PI, Open, state) //state = "closed" 报错,只能初始化一次 //fmt.Println(state) for i := 0; i < 5; i++ { const s = 6 fmt.Println(s) } } go语言开发交流 qq群 857263711 保持进步 希望每个人都能找到自己喜欢的方式生活、工作。 来源: https://www.cnblogs.com/songhuan999999/p/11187728.html

mtk平台hw_get_module分析

人盡茶涼 提交于 2020-03-15 17:11:35
google为了保护硬件厂商的信息,在android中添加了一层HAL层。查看HAL的编写方法的过程中,发现整个模块没有一个入口。一般应用程序有main函数,可以让加载器进行加载执行,而对于动态链接库,我们可以对库中导出的任何符号进行调用。 android中的HAL需要上层的函数对其进行加载调用,android的HAL加载器是如何实现对不同的Hardware Module进行通用性的调用的呢? 查看源码的过程中发现android中实现调用HAL是通过hw_get_module实现的。 int hw_get_module(const char *id, const struct hw_module_t **module) { return hw_get_module_by_class(id, NULL, module); } 这是其函数原型,id会指定Hardware的id,这是一个字符串,比如我们比较熟悉的sensor的id是#define SENSORS_HARDWARE_MODULE_ID "sensors",如果找到了对应的hw_module_t结构体,会将其指针放入*module中。看看它的实现。 int hw_get_module_by_class(const char *class_id, const char *inst, const struct hw_module

UIImagePickerController

霸气de小男生 提交于 2020-03-15 16:21:26
UIImagePickerController概述: UIImagePickerController 类是获取选择图片和视频的用户接口。我们可以用这个controller选择我们所需要的图片和视频。对于这个类来说比较特殊,我们不能够任意定制,也不可以继承生成子类。 我们在用 UIImagePickerController类的时候,只需要调用用代码实现其在什么位置显示和开始,当然我们之后可以选择所需的图片和影片,或者也可以不选择点击取消即可。 但是在我们调用接口之前,我们需要确认: 一:当前设备是否支持使用 UIImagePickerController,这个时候我们需要调用 isSourceTypeAvailable:方法判断。 二:查看符合的媒体类型(图片或者视频),这个时候我们调用 availableMediaTypesForSourceType: 方法判断。 同时使用 UIImagePickerController时,我们需要 UIImagePickerControllerDelegate协议代理实现一些特定时间特定的动作。在调用摄像头的时候我们可以选择使用闪光灯,但是默认条件下对视频有10分钟的限制,需要用videoMaximumDuration属性更改默认时间, 三:之后我们设定界面媒体的属性 1: sourceType //从哪选取媒体 enum {

拷贝、赋值与销毁

我只是一个虾纸丫 提交于 2020-03-15 12:21:09
一个类的拷贝控制操作包含: 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 其中: 拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时的操作。 拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时的操作。 析构函数定义了当此类型对象销毁时的操作。 如果一个类没有定义所有这些拷贝控制成员,编译器会自动为它定义缺省的操作。对一些类来说,依赖于这些操作的默认定义会导致灾难。 拷贝构造函数 如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数: class Foo{ public: Foo(); //默认构造函数 Foo(const Foo&); //拷贝构造函数 }; 拷贝构造函数的第一个参数必须是引用类型。 虽然可以定义一个接受非 const 引用的拷贝构造函数,但是此参数几乎总是 const 的。 拷贝构造函数在一些情况下会隐式使用,因此拷贝构造函数通常不定义成 explicit 。 合成拷贝构造函数 如果没有自定义拷贝构造函数,编译器会自动生成一个,与合成默认构造函数不同,即使定义了其他构造函数,编译器也会合成一个拷贝构造函数。 一般情况,合成的拷贝构造函数会从给定对象中依次将每个非 static 成员拷贝到正在创建的对象中,每个成员的类型决定了如何拷贝: 对类类型的成员