C/C++学习笔记
风之清扬
拥抱生活,拥抱创新,每天学点新知识,积少成多,努力进取!
展开
-
指针总结
C/C++学习笔记之六(指针总结)前两节对指针的定义、指针与数组的关系以及指针作函数参数来访问的作用。接下来,我们将讨论一些常见的用法及错误。(1)const指针的用法const指针限定指针的内存操作(即只可读内存而不可写内存),并不限制对指针的加减操作。例: int a=9; const int *p=&a; printf("%d",*p);/原创 2016-03-29 17:05:13 · 388 阅读 · 0 评论 -
字符串的分割、引用与调试
C++学习补充知识1.字符串的分割算法int seperate(char *str,char *part[]){int start=0;//起始符int stop=0;//终止符int flag=0;//判断当前符号是否有效int count =0;//统计多少段for(int i=0;!stop;i++){char ch=str[i];if(ch==0){原创 2016-05-12 19:10:58 · 426 阅读 · 0 评论 -
位操作与中文字符问题
1.位操作信息按位存储,占据空间小。但读取比较麻烦。1)信息的按位存储引例:舞台上有八盏灯(1:亮,0:灭);int status[8]={1,0,0,0,1,1,0,1};char staus[]={1,0,0,0,1,1,0,1};应用场景:嵌入式(GPIO,一位连接一根电线);数据压缩编码2)移位位操作一般以unsigned char a=0x13原创 2016-05-13 18:50:52 · 495 阅读 · 0 评论 -
C++编程---线程技术初识
创建第一个线程程序在以前的基础篇中,无法实现程序并发进行。而线程就是实现线程技术。其中:有一些提前准备的类库(osapi),线程类,用于编写线程代码。实现过程:(1)创建一个类(2)运行线程class MyTask:public OS_Thread{private:virtual int Routine(){for(int i=0;iprintf("小和尚念经!....原创 2016-05-15 20:57:20 · 350 阅读 · 0 评论 -
dll库的编写与使用
杂项技术之一-----dll学习1.dll库的创建dll库是动态库的简称。一般程序员将自己已经编好的程序交给别人使用,然而又不希望别人看到程序内容,因而出现了动态库技术。动态库的创建步骤:(1)创建程序时选择dll程序(最好再去掉什么开发周期内容)。(2)然后依次创建程序。(3)在项目里右击属性:常规里(可以选择dll的生成目录与名称)。(4)C++代码生成模块选择MTD方式;(5)与编译原创 2016-05-16 14:20:25 · 620 阅读 · 0 评论 -
内部类与模板
C++学习笔记之五1.内部类顾名思义,内部类就是将一个类定义在另一个类内部里面。内部类与外部类:无任何关系,相互不能调用和访问。一个类写在内部类和外部类没有任何限制。如果一个类处于private处,是不能被访问的。内部类可以只定义将其内容写在.cpp中。内部类的由来:(1)避免名字冲突(2)只想在内部使用,外部只隐藏(大多数情况)内部类没有层数限制。总结:内部类与外原创 2016-05-07 13:27:38 · 1433 阅读 · 0 评论 -
构造、析构、对象与继承
C++学习笔记之二上一节讲到了构造函数,这一节继续讲解。构造函数可以被重载,如:Object(){this->object=5;}Object(int object){this->object=object;}//这两个函数是原创 2016-04-22 22:55:28 · 415 阅读 · 0 评论 -
标准模板库
C++学习笔记之六标准模板库是C++标准库的一部分,是C++编程中经常用到的一个模板。下面将介绍它的常用结构。主要以string,vector,map,list为例。1.vector一般用法:#includeusing namespace std;vector arr;//常用函数:push_back()//尾部添加pop_back();//尾部删除clear(原创 2016-05-08 16:26:27 · 731 阅读 · 0 评论 -
第一个Qt程序
C++学习Qt篇之一1.HelloWorld程序#include#includeint main(int argc,char *argv[]){Qapplication a(arg,argv);QLabel label("HelloWorld!\n");label.show();return a.exex();} 2.Visual AssitX的配置原创 2016-05-08 16:42:00 · 422 阅读 · 0 评论 -
类的继承、拷贝构造函数
C++学习笔记之三上一节讲到了继承的基本用法,这一节主要讲述继承的基本用法以及拷贝构造函数。1.继承class Tutorial{};class vedioTutorial:public Tutorial{};注:继承时,私有成员(private)不能被调用。protected成员不能够被外部访问,但是能够被子类继承。1)虚拟继承(起原创 2016-04-23 22:23:29 · 2484 阅读 · 0 评论 -
C++线程与网络接口技术(第一节:线程及其创建,调度与回收知识)
1.线程 2.线程的调度,sleep的使用 3.线程的创建与启动 4.线程的停止与回收原创 2016-06-07 11:21:08 · 341 阅读 · 0 评论 -
函数指针与回调机制
1.函数指针 普通指针:修改内存的值;函数指针:调用函数 一个简单的实例:#include<stdio.h>void print(int n){ printf("result:%d\n",n*n);}int main(){ void (* p)(int); p=&print;//p=print;函数名就是指针地址 p(5); getchar();原创 2016-05-19 14:15:30 · 473 阅读 · 0 评论 -
C++线程与网络接口技术(第二节:线程共享、安全与通知等)
1.线程间共享数据 各线程间可访问全局变量 互斥锁:协调线程,使其步调一致(Mutex)。 g_mutex.lock()//上锁,g_mutex.unlock();//解锁 锁资源由操作系统定义。 互斥锁的使用原则:减少占用时间(尽量缩短对共享数据的访问时间)。 实例:互斥锁#include <stdio.h>#include "osapi原创 2016-06-08 20:59:27 · 651 阅读 · 0 评论 -
C++线程与网络接口技术(第三节:初识Socket)
1.认识网络通讯与IP地址 网络通讯是两台设备通过网络介质进行相互通信的方法。 常用的命令:ipconfig(查看笔记本/pc配置) ping (查看是否与其它主机联通) 2.Socket与复用技术 一个主机上可能有多个程序使用网络,引入Socket套接字(插口),最多有65535个插口;一个Socket只能传输一个套接字。 串行通信:一根网线进行连接。 复用技术:一个信道,多个So原创 2016-06-10 16:59:15 · 404 阅读 · 0 评论 -
线程与网络编程(第四节:缓冲区与按字节传递)
1.发送接收缓冲区 一块内存:缓冲区 工作过程:发送方经过sendTo()发送到缓冲区,然后由操作系统自动取走,经网络传输存放到对方的缓冲区,然后经RecvFrom()取得内容。 由于存放数据与发送数据存在时间差,如果存的太多,可能会导致丢失;同理,接收时也类似。 可能的解决方案:设置大一点的缓冲区 具体代码: 发送方:#include<stdio.h>#include "osapi/原创 2016-06-12 16:00:43 · 549 阅读 · 0 评论 -
线程与网络编程(第五节:UDP的扩展与双工通信)
1.UDP Socket的扩展 (1)默认分配端口号 OS_SockAddr local; OS_UdpSocket sock; sock.open(local,true);//不设置本地端口 发送:sock.sendTo(buf,n,peer);//send后会自动分配一个Ip;(2)端口的占用 sock.open(local,true);//允许重用 若果:if(sock.O原创 2016-06-13 10:20:10 · 401 阅读 · 0 评论 -
线程与网络编程(第六节:通信协议与TCP socket初识)
1.通信协议 实例:文件传输 A发送一个文件给B (1)把一个文件分块传送,每块最大1024字节; (2)数据包格式:前16个字节表示指令 (3)01:开始传送 02:数据包 F1:结束传输 发送方:#include #include #include "Endian.h"#include "osapi/osapi.h"int main(){ printf("原创 2016-06-14 20:52:36 · 817 阅读 · 0 评论 -
网络与线程编程(第七节:TCP与数据包)
1.TCp(2)发送接收缓冲区 Tcp的发送模式基本等同UDP,但不同点在于UDP是包式存取,而TCP是流式存取,每个包不带地址。 发送:send(“Hello”)与send(“World’);可能同时被一起取走;而发送send(“HelloWorld”);//有可能只取走hello。 问题:对于TCp socket,如何判断Recv()已取回全部数据?(何时超时) 定义边界:a->b(请求原创 2016-06-15 17:21:45 · 344 阅读 · 0 评论 -
拷贝构造与重载运算符
C++学习笔记之四1.拷贝运算符含义:以一个对象为蓝本来构造另一个函数。上一节已经讲到了拷贝函数的三种形式:(1)Object a;Object b(a);//等同于:Object b=a;(2) 动态创建:Object *p=new Object(a);(3)函数传值调用:void test(Object a);会自动调用Object(const Object原创 2016-04-30 14:03:25 · 380 阅读 · 0 评论 -
XML编程技术
1.XML文档格式 XML文件:传输文件的格式 优点:可读性强;缺点:解析困难,废时,废空间,效率低。 格式:(1)声明 <root> <host>jasnas.cn</host> <port>8080</port></root>注:(1)元素标记可能出现错误,因为前后不对应 (2)可以加多个元素属性,属性间用空白隔开 (3)元素与子元素:…….. 以树形结构显示,代原创 2016-05-22 14:13:59 · 771 阅读 · 0 评论 -
结构体
C/C++学习笔记之七结构体是C/C++中的一个重点内容,无论工程应用还是考试过程中,都会不断的考察它的使用,下面我们就结构体加以讨论。原创 2016-03-31 21:37:42 · 373 阅读 · 0 评论 -
变量、常量及输入处理
C/C++学习笔记一不知什么时候开始,感觉自己应该学点什么,不管从专业技能还是日后工作的角度而言,这都是现在我们应该做的。为甚么挑选C/C++系列的?首先,C/C++是比较低级的高级语言,在工程、游戏等中应用十分广泛,学好它应该不用担心饭碗;其次,C/C++在大学时候上过,有一点基础,虽然当时没怎么学(这里没有基础的也可以学,不针对任何人,只是个人感想。),但基本的语法结构还是了解的,原创 2016-03-21 22:43:37 · 685 阅读 · 0 评论 -
动态分配内存和链表
C/C++学习笔记之八上一节我们讲到了结构体,结构体是一个非常重要的内容,特别对于本节内容而言是一个非常重要的基础知识。本节主要讲动态内存的分配与链表的处理,下面将对其进行具体介绍。1.动态内存分配(malloc/free)原因:数组的长度定死了,无法改变,这才引入了动态内存的分配 例:struct Student{int id;//学号char name[10];原创 2016-04-04 14:21:23 · 2763 阅读 · 0 评论 -
一个实例(链表与动态内存分配)
学生信息管理:添加、删除、查询与修改等#include<iostream>using namespace std;struct Student{ int id; char name[10]; Student *next;};Student *createNode(){ Student *stu=(Student *)malloc(sizeof(Student)原创 2016-04-04 14:33:02 · 766 阅读 · 0 评论 -
字符串
C/C++学习笔记之九字符串是C/C++中的一个重点内容,下面就将一起讨论关于字符串的相关知识。 1.认识字符串 字符串的定义:由于在不引入头文件的情况下,没有字符串类型,因此,我们常用字符数组或字符指针来定义字符串。char buff[]="Hello";//字符数组以'\0'结尾。或者char *buff="Hello";注:字符定义为char a='a原创 2016-04-05 20:47:20 · 338 阅读 · 0 评论 -
类型转换、位操作符、函数简介
C/C++笔记二——类型转换、位操作符、函数简介上一讲,我们一起回顾了变量与常量的知识,这一讲主要是对类型转换、位操作符、函数等方面做出介绍。下面将从类型转换说起。1.类型转换类型转换分为强制类型转换和自动类型转换。自动类型转换是指精度低的向精度高的转换,或者是向字节高的类型转换,若字节数相同,有符号向无符号数转变,而char,short类型参与运算时,必须转换成整型。例1原创 2016-03-23 20:16:51 · 509 阅读 · 0 评论 -
常用函数详解
C/C++学习之三上一节讲到函数使用以解决某一问题的方法,用户只需要自己的要求去使用它,而不需要关心它是如何实现的,这是程序员的任务。下面我们主要探讨函数的参数、返回值、重载以及递归调用。1.函数的参数函数的参数分为实参和形参,在定义时,函数的参数为形参,当调用实现该函数时,则为实参。举个简单的例子:#includeint max(int a,int b){//a,b为形式原创 2016-03-24 16:04:16 · 318 阅读 · 0 评论 -
初识ANSI C标准
ANSI C 主要标准化了现存的实践, 同时增加了一些来自 C++ 的内容 (主要是函数原型) 并支持多国字符集 (包括备受争议的三字符序列)。 ANSI C 标准同时规定了 C 运行期库例程的标准。下面我们就简要的介绍它。首先讲解头文件中的sprintf与sscanf的用法:char buff[50];sprintf(buff,"Name:%s,Age:%d","张三",86原创 2016-04-06 20:27:05 · 897 阅读 · 0 评论 -
小的实例
C/C++练习题一1.将十六进制字符串变为十进制无符号整数例如,有字符串char buf [ ] = "12AB3d";写一段代码,将字符串buf转成一个整数。(整数的值是0x12AB3d ,即十进制的1223485)代码如下:#includeusing namespace std;int Converse(char str[]){int i=0;原创 2016-03-24 19:31:54 · 319 阅读 · 0 评论 -
ANSI库续(时间函数)与文件操作初识
C/C++学习笔记之十一 上一节我们讲到了头文件stdlib.h与头文件stdio.h中的sscanf、sprintf、rand、srand函数,这一节将继续讨论时间相关函数和文件操作。时间函数的头文件是#includetime_t类型:是一个整数,可以强制转换为int来打印;(与编辑器有关,通常为32位或64位整数)。例:time_t now1=time(NULL)原创 2016-04-07 19:04:45 · 462 阅读 · 0 评论 -
指针(1)
C/C++学习之四指针是C/C++中的一个难点,同时也是一个重点.。下面我们将介绍指针的相关语法。 变量被存储在内存单元中,内存单元有其地址。每次运行时,变量的内存地址会发生变化。如果我们定义一个变量来保存内存地址,那么就可以通过该变量来访问内存空间。1.语法类型名(*) 变量名=内存地址(或指针);如:int* a;//指针变量a,int b=3;a=&b;//原创 2016-03-25 19:36:05 · 342 阅读 · 0 评论 -
指针(2)
C/C++学习笔记之五 上一节主要讲了利用指针来访问内存空间,通过指针可以读取、修改内存的值,并介绍了基础用法,这一节我们将进一步谈到指针的用法。可以利用指针作为函数参数。void swap(int a,int b){int temp=a;a=b;b=temp;}//交换参数值int a=2;int b=3;swap(a,b);原创 2016-03-27 14:34:43 · 390 阅读 · 0 评论 -
如何使用双重指针
双重指针的使用单重指针已经够蛋疼了,c语言中还引入了双重指针,甚至若干重指针。使得这个情况变得更加复杂。虽然以前一直觉得双重指针也不过如此,指针的指针嘛,还不是照样理解,但是上一次重删代码中,因为管理海量数据,引入了大量的指针操作,并且为了函数封装,采用了指针作为参数来传递。因此出现了较多问题,现在感觉很有必要写一篇有关双重指针的博文。先看一个例子:程序1v转载 2016-03-28 10:12:56 · 7614 阅读 · 1 评论 -
文件的读写与访问
C/C++学习笔记之十二文件的读写操作在实际应用中十分广泛,如在二级考试中就会经常见到。下面就读写存储操作加以讨论。1.创建文件const char *filename="C:/a.txt";File *fp=fopen(filename,"wb");//第二个参数可读可写,根据具体的要求。if(fp==NULl){printf("cannot open this fi原创 2016-04-09 13:53:05 · 963 阅读 · 0 评论 -
QTAddMin安装失败
1、问题:为了解决qt中文乱码问题,重新安装VS2012在安装Qt Visual Studio插件的时候,由于电脑太热自动关机了。后来重新安装qt-vs-addin-1.2.2-opensource.exe插件,怎么安装都不行,提示已经安装了,要先卸载。可是又找不到卸载程序。。这可费大劲了。A previous installation of Qt5 Visua转载 2016-04-13 22:08:54 · 840 阅读 · 0 评论 -
文件的随机访问与多文件项目
上一节我们讲到文件的读写存储机制。原创 2016-04-14 21:01:30 · 376 阅读 · 0 评论 -
类的初识与构造函数
C++学习之一上面的C语言部分已经结束,接下来讲解C++部分。C++是对C语言的扩充,具有四大特性:继承、封装、抽象与多态。类是对一类共同事物的抽象。对象是类的实例。类的关键字为class.下面以例子说明:class First{private:int a;public :First(int a){this->a=a;}//构造函数void show原创 2016-04-16 14:41:21 · 342 阅读 · 0 评论 -
网络与线程编程(第八节:查询机制)
select是一个函数,用于向OS查询。OS_socket类做了一个简单的封装,用于查询Socket是否可以读写。 实例: Client:#include <stdio.h>#include <string.h>#include "osapi/osapi.h"#include "Endian.h"int main(){ // 打开Socket OS_TcpSocket cl原创 2016-06-16 10:03:28 · 408 阅读 · 0 评论