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