C++ 语法
数据类型:
Type | Size | 数值范围 |
无值型void | 0 byte | 无值域 |
布尔型bool | 1 byte | true false |
有符号短整型short [int] /signed short [int] | 2 byte | -32768~32767 |
无符号短整型unsigned short [int] | 2 byte | 0~65535 |
有符号整型int /signed [int] | 4 byte | -2147483648~2147483647 |
无符号整型unsigned [int] | 4 byte | 0~4294967295 |
有符号长整型long [int]/signed long [int] | 4 byte | -2147483648~2147483647 |
无符号长整型unsigned long [int] | 4 byte | 0~4294967295 |
long long | 8 byte | 0~18446744073709552000 |
有符号字符型char/signed char | 1 byte | -128~127 |
无符号字符型unsigned char | 1 byte | 0~255 |
宽字符型wchar_t (unsigned short.) | 2 byte | 0~65535 |
单精度浮点型float | 4 byte | -3.4E-38~3.4E+38 |
双精度浮点型double | 8 byte | 1.7E-308~1.7E+308 |
long double | 8 byte |
|
1、sprintf
函数功能:
把格式化的数据写入某个字符串缓冲区。
头文件: stdio.h
函数原型:
int sprintf( char *buffer, const char*format, [ argument] … );
2、字符数组,末尾不自动添加\0, 而字符串末尾自动添加\0
定义字符串有两种方法:
一、字符串指针 char *string="abcde"; 二、一维字符数组。例如:char string[10];string="abcde"; 用字符数组定义注意了,数组长度为n,但是字符个数只能为n-1,就是上面说的计算机默认加了\0占了一个,否则会溢出。
3、'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。
Char [5]= ‘\0’ 或者char[5] = 0;
4、sizeof(x)可以用来定义数组维数的原因
char str[20]="0123456789";
int a=strlen(str);//a=10;
int b=sizeof(str); //而b=20;
5、关于指针,delete是释放内存空间,赋值为NULL是让它不指向任何地方。
对一个空指针delete 是合法的,对非空指针,连续delete可能会delete不是自己的内存,出错。
6、大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是
双冒号(::)用法
(1)表示“域操作符”
例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,
就要写成void A::f(),表示这个f()函数是类A的成员函数。
(2)直接用在全局函数前,表示是全局函数
例:在VC里,你可以在调用API 函数里,在API函数名前加::
【存在和API同名的函数,需要在函数调用前注明命名空间,全局(API)的,需要加::,否则类名::fun.】
(3)表示引用成员函数及变量,作用域成员运算符
例:System::Math::Sqrt() 相当于System.Math.Sqrt()
命名空间 【程序中变量和函数的定义空间,通过声明不同的命名空间,调用不同地方定义的函数或变量】 using namespace A,B,std
通过使用using namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的.这样一来就不会引起不必要的冲突了.
命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。
由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。using std::cout; using std::endl; using std::cin; 以上程序可以写成cout << std::hex << 3.4 << endl;
3、最方便的就是使用usingnamespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:cout <<hex << 3.4 << endl;因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。所以就有了<iostream.h>和<iostream>等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"
MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。
SuspendThread
该函数用于挂起线程.语法格式如下:
DWORDSuspendThread(HANDLE hThread);
hThread: 表示线程句柄
返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF
ResumeThread
该函数用于煎炒线程挂起的次数,如果线程挂起的次数为0,将唤醒线程.语法格式如下:
DWORDResumeThread(HANDLE hThread);
hThread: 表示线程句柄
返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF
ExitThread
该函数用于结束当前线程.语法格式如下:
VOIDExitThread(DWORD dwExitCode);
dwExitCode:表示线程退出代码
TerminateThread
该函数用于强制终止线程的执行.语法格式如下:
BOOLTerminateThread(HANDLE hThread, DWORD dwExitCode);
hThread: 表示待终止的线程句柄
dwExitCode:表示线程退出代码
win32console application 和Win32 Application
(1)Win32 Application就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的…它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。Win32 Application是为你开发windows应用程序所准备的,程序以WinMain()为入口,#include<windows.h>,能够使用win32 API函数。
(2)而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的;或者叫CUI(CharacterUser Interface字符用户接口)。console程序以main()为入口,不能使用win32 API函数。