代码调试时积累的知识(2)
来源:互联网 发布:python可视化窗口编程 编辑:程序博客网 时间:2024/04/30 04:38
1.c++中“->”与“.“的区别
“->”是在指针中用的;“.“是在类或者结构体变量中用的。
eg:
struct aaa{ int a; int b;};声明:aaa t;aaa* p;p = &t;t.a = 2; //这里t是变量,所以用(.)t.b = 3;assert(p->a == 2); //这里p是指针,所以用(->)assert(p->b == 3);
2.c++错误:不允许使用不完整的类类型
错误原因:使用该类的文件看不到该类。
解决办法:将类的定义放到.h头文件中,在使用该类的文件中#include该头文件。
eg:在main程序中用到了一个结构体,但是代码中该结构体的定义在一个.cpp文件中,主程序只调用了该.cpp文件中的一个函数,因而在主程序文件中看不到该类。
在改之前,该被调用的函数里面用到了结构体,结构体就在该类的文件中被定义,但是返回的是一个整型变量,主程序中并没有使用该类,所以没有出现这个报错。
3.qsort的使用
(1)对结构体一级排序
struct Sample{double data;int other;}s[100]//按照data的值从小到大将结构体排序int cmp( const void *a ,const void *b){return (*(Sample *)a).data > (*(Sample *)b).data ? 1 : -1;}qsort(s,100,sizeof(s[0]),cmp);
对结构体二级排序
struct Sample{int x;int y;}s[100];//按照x从小到大排序,当x相等时按照y从大到小排序int cmp( const void *a , const void *b ){struct Sample *c = (Sample *)a;struct Sample *d = (Sample *)b;if(c->x != d->x) return c->x - d->x;else return d->y - c->y;}qsort(s,100,sizeof(s[0]),cmp);
(2)对字符串进行排序
struct Sample{int data;char str[100];}s[100];//按照结构体中字符串str的字典顺序排序int cmp ( const void *a , const void *b ){return strcmp( (*(Sample *)a)->str , (*(Sample *)b)->str );}qsort(s,100,sizeof(s[0]),cmp);
(3)对数据进行排序
double in[100];int cmp( const void *a , const void *b ){return *(double *)a > *(double *)b ? 1 : -1;}qsort(in,100,sizeof(in[0]),cmp);
4.<<与>>符号
位移符号。将数字换成二进制,并且移动小数点位置。
36>>2相当于除以4;16<<2相当于乘以4.
5.wchar_t
wchar_t是C++的字符数据类型,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,字符型无法表示。
wchar_t数据类型为16位,所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t宽字符类型的相关操作。
#include <iostream> using namespace std; void main() { locale loc( "chs" );//定义“区域设置”为中文方式 wcout.imbue( loc );//载入中文字符输入方式 wchar_t str[]=L"中国";//定义宽字符数组,注意L是大写 wcout<<str<<endl;//显示宽字符数组,下同 wprintf(str); system("pause");
ar_t
0 0
- 代码调试时积累的知识(2)
- 代码调试时积累的一些知识
- 初学PHP时的知识积累
- java知识------我的积累(一)
- 知识的积累(引)
- 知识的积累
- 知识的积累
- 知识的积累
- 知识 经验的积累
- highcharts知识的积累
- Ruby知识积累2
- 小知识积累(2)
- 代码知识积累2010-10-12
- leveldb代码阅读知识积累3
- 知识积累方式的改变
- 知识的积累和巩固
- 在工作中积累的一点知识
- C语言的知识积累
- eclipse升级SDK后容易发生的错误
- Windows下FFmpeg快速入门
- Android-Query (AQuery)简介
- acm水仙花数问题
- 学习笔记 --- LINUX 驱动调试之printk
- 代码调试时积累的知识(2)
- 鼠绘卡通人物
- 零 初识ABAP
- cocos2dx自定义的滑动滚条
- C语言之动态函数的使用
- 项目进度【困难篇】
- thrift的enum:根据value取得name
- 反向进程注入及隐藏--动手做一个最简单的PELoader
- C++实现链表的创建、插入、删除