#define:宏常量的設置const:修飾變量\t:水平制表符,跳到下一個tab的位置,可用于多行輸出對齊

int a = rand()%(n-m+1) + m:產(chǎn)生隨機數(shù)的范圍[m,n]srand((unsigned int)time(NULL));可利用sizeof()統(tǒng)計數(shù)據(jù)類型所占大小
| 數(shù)據(jù)類型 | 長度 | 大小 |
|---|---|---|
| short | 2字節(jié) | 2^±15 |
| int | 4字節(jié) | 2^±31 |
| long | 4字節(jié) | 2^±31 |
| long long | 8字節(jié) | 2^±63 |
| 數(shù)據(jù)類型 | 長度 | 大小 |
|---|---|---|
| float(后加f) | 4字節(jié) | 7位有效數(shù)字 |
| double | 8字節(jié) | 15~16位有效數(shù)字 |
char a=‘x’ 、1字節(jié)、單引號、一個字符
實際存儲的為對應的ASCII碼,‘a(chǎn)’=97、‘A’=65
1個字節(jié),ture——真——非0,false——假——0
3. 運算符 3.1 算術運算符只有整數(shù)能夠進行取模運算
++a/–a:先加減、再運算
a++/a–:先運算、再加減
+=,-=,*=,/=,%=
==,!=,>=,<=,>,<
!、&&、||
//三種不同的定義方式
int a[10];
int a[10]={1,2...10};
int a[]={1,2...10};4.2 一維數(shù)組名獲取整個數(shù)組占用內存空間的大小
可以通過數(shù)組名到數(shù)組首地址
int arr[3]={1,2,3};
cout<<"整個數(shù)組的長度:"<4.3 例//四種定義方式
int arr[2][3];
int arr[2][3]={1,2,3,4,5,6};
int arr[][3]={1,2,3,4,5,6};
int arr[2][3]=
{//推薦此方法,直觀,提高代碼的可讀性
{1,2,3},
{4,5,6}
}4.5 二維數(shù)組名獲取整個數(shù)組占用內存空間的大小
可以通過數(shù)組名到數(shù)組首地址
cout<<"整個數(shù)組所占空間的大小:"<5. 指針無論什么類型,都占4個字節(jié)(在win32位系統(tǒng)中)
5.1 定義與使用//定義指針
int a=10;
int *p;
p=&a;//為指針賦值(地址)
//使用指針
*p;//解指針,指向內存中的數(shù)5.2 空指針int *p = NULLint *p = (int *)0x1100const int *p = &aint * const p = &aconst int * const p= &aint *p = arr//指向數(shù)組首地址int a=10,b=20;
swap(&a,&b);
void swap(int *p1.int *p2){int temp = *p1;
*p1=*p2;
*p2=temp;
}p++;//函數(shù)的運算在定義時,不可以省略struct關鍵字;在使用時,可以省略struct關鍵字。
//定義結構體(以下皆以此為例)
struct Student{string name;
int age;
};
//創(chuàng)建結構體變量,三種使用方法
struct Student s; s.name="000"; s.age=20;
struct Student s={"000",20}
在定義結構體后創(chuàng)建變量,隨后賦初值6.2 結構體與數(shù)組、指針//創(chuàng)建數(shù)組變量
struct Student s[2]{{"000",20};
{"001",21};
};
//使用
s[i].name//創(chuàng)建指針變量
Student s={"000",21};
Student *p = &s;
//使用
p->name不修改主函數(shù)中的數(shù)據(jù),使用值傳遞。修改主函數(shù)中的數(shù)據(jù),使用地址傳遞
struct Student s;
void printf1(struct Student p){p.name…………}//值傳遞
printf1(s);
void printf2(struct Student *p){p->name…………}//地址傳遞
printf2(&s);使用指針進行傳遞,可以減少內存空間,而且不會復制新的副本。
而使用const修飾結構體Student const *p能夠防止誤操作
在頭文件.h中,只有屬性與行為函數(shù)的聲明
//該文件名為test.h
#pragma once//防止頭文件重復包含
#includeusing namespace std;
class P{public:
void setX(int x);
int getX();
private:
int p_x;
} 7.2 源文件在源文件.cpp中,只有行為函數(shù)所有的實現(xiàn)
#include "test.h"http://包含頭文件名
//此時為全局函數(shù),需要加上作用域成為成員函數(shù)
void P::setX(int x){p_x=x;
}
int P::getX(){return p_x;
}8.內存分區(qū)模型四個區(qū)域,代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)
不同區(qū)域存放的數(shù)據(jù),賦予不同的生命周期,給我們更大的靈活編程
在程序編譯后,會生成exe可執(zhí)行程序
四個分區(qū)可分為程序執(zhí)行前(代碼區(qū)、全局區(qū))與程序執(zhí)行后(棧區(qū)、堆區(qū))
存放函數(shù)體的二進制代碼(CPU執(zhí)行的機器指令),由操作系統(tǒng)進行管理
存放全局變量、靜態(tài)變量、常量(字符串常量,const修飾全局變量)
該區(qū)域的數(shù)據(jù)在程序結束后由操作系統(tǒng)釋放
由編譯器自動分配釋放,存放函數(shù)的參數(shù)值、局部變量等
不要返回局部變量的地址
由程序員分配(new)和釋放(delete),若程序員不釋放,程序結束時由操作系統(tǒng)回收
8.5 new操作符在堆區(qū)創(chuàng)建數(shù)據(jù),返回該數(shù)據(jù)對應類型的指針
基本語法
int * a = new int(10);//創(chuàng)建
delete a;//釋放開辟數(shù)組
int * arr = new int [10];//創(chuàng)建
delete[] arr;//釋放作用:給變量起別名(用不同的變量名操作同一塊內存空間)
語法:數(shù)據(jù)類型 &別名 = 原名
注意:引用必須要初始化;初始化后不能再更改
本質:是一個指針常量(指向不可改,值可改)
int a=10;
int &ref = a;//自動轉換為`int * const ref = &a
ref=20;//內部發(fā)現(xiàn)ref是引用,自動轉換成*ref=20效果與地址傳遞相同,能夠修改實參,簡化了地址傳遞(指針的使用)
void swap(int &x,int &y){……;
}
//實際上為取別名,將a->x,b->y
swap(a,b);9.3 返回值引用可以作為函數(shù)的返回值存在
不能返回局部變量的引用
int& test(){int a=100;
return a;
}函數(shù)調用能夠作為左值使用(如果函數(shù)做左值,則必須返回引用)
int& test(){static int a=100;
return a;
}
test()=1000;防止誤操作,修改實參
int &ref=10;//錯誤,引用本身需要一個合法的內存空間
const int& ref =10;//正確,編譯器自動優(yōu)化代碼
ref = 100;//錯誤,加入const后不可以修改變量
void show(const int& x){x=10;//不能夠改變
}10.函數(shù)高級
10.1 默認參數(shù)int fun(int a=10,int b=20)形參中可以有默認參數(shù)
void fun(int),只有數(shù)據(jù)類型
函數(shù)名相同,提高復用性
引用作為重載的條件
//不同情況
void fun(int &a){} int a=10;fun(a);
void fun(const int &a){} fun(10);重載碰到默認參數(shù)
會出現(xiàn)二義性
void fun(int a,int b=10){}
void fun(int a){};
fun(10);//此時兩個都可以調用,分不清ofstream:寫操作ifstream:讀操作fstream:讀寫操作寫文件
#includeofstream ofs;ofs.open("文件路徑",打開方式);ofs<<"寫入的數(shù)據(jù)";ofs.close();文件打開方式
可以配合使用,利于|操作符
| 打開方式 | 解釋 |
|---|---|
| ios::in | 為讀文件而打開文件 |
| ios::out | 為寫文件而打開文件 |
| ios::ate | 初始位置,文件尾 |
| ios::app | 追加方式寫文件 |
| ios::trunc | 如果文件存在先刪除,再創(chuàng)建 |
| ios::binary | 二進制方式 |
讀文件
包含頭文件:#include
創(chuàng)建流對象:ifstream ifs;
打開文件并判斷是否成功打開:
ifs.open("文件路徑",打開方式);
if(!ifs.is_open(){cout<<"文件打開失敗"<沒寫絕對路徑的話,生成在當前目錄
讀數(shù)據(jù):四種方式
關閉文件:ifs.close();
讀數(shù)據(jù)的四種方式
第一種
char buf[1024] = {0};
while(ifs>>buf){cout<第二種
char buf[1024] = {0};
while(ifs.getline(buf,sizeof(buf))){cout<第三種
string buf;
while(getline(ifs.buf)){cout<第四種(不推薦)
char c;
while( (c=ifs.get())!= EOF ){//EOF 表示end of file
cout《《
}寫文件
包含頭文件:#include
創(chuàng)建流對象:ofstream ofs("文件路徑",打開方式);
打開文件(可省略):ofs.open("文件路徑",打開方式);
寫文件
//函數(shù)原型:ofstream& write(char *buffer,int len);
Person p={"張三",18};
ofs.write( (const char *)&p,sizeof(Person) );關閉文件
ofs.close();
讀文件
包含頭文件:#include
創(chuàng)建流對象:ifstream ifs;
打開文件并判斷是否成功打開
ifs.open("a.txt",ios::in | ios::binary);
if(!ifs.is_open()){cout<<"文件打開失敗"<讀文件
Person p;
ifs.read( (char *)&p,sizeof(Person) );關閉文件:ifs.close;
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:第一部分C++基礎語法-創(chuàng)新互聯(lián)
URL鏈接:http://www.yijiale78.com/article30/psjso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、ChatGPT、搜索引擎優(yōu)化、定制開發(fā)、商城網(wǎng)站、云服務器
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容