(三十九)語法雜項

變量總是有值的

變量總是有值的,即使你沒有初始化拴泌。變量的值就是內(nèi)存的值魏身,內(nèi)存里每個位的值要么是1要么是0,總有一個值蚪腐。當(dāng)一個變量被聲明而未初始化時箭昵,它的值稱為原始值或隨機(jī)值。

一般如果一個變量沒有賦值回季,想要打印就會報錯家制。其實這只是輔助檢查錯誤的模式而已。在生成->配置管理器->將Debug改為Release泡一,就不會報錯了颤殴。

在Debug編譯模式下,程序包含了一個輔助調(diào)試信息瘾杭,才會出錯诅病。

在Linux下,使用-g編譯表示Debug模式

typedef的用法

用于給已有的類型聲明一個別名,確切的說贤笆,不是定義一個類型蝇棉,而是定義一個類型的別名。

#include<stdio.h>
typedef unsigned int UINT32;
int main()
{
    UINT32 a;
    UINT32* p = &a;

    unsigned int b;
    p = &b;
    return 0;
}

這種只是寫法的簡化而已

在舊的C語法中芥永,struct用起來比較麻煩篡殷,一般用typedef進(jìn)行簡化

//C語言寫法
struct Student
{
    int id;
    char name[16];
}
//建立Student對象,需要加上Student
struct Student s;

//建立Student對象埋涧,使用typedef簡化
typedef struct Student student_t;
student_t s;
//C語言使用typedef板辽,更大的簡化
typedef struct
{
    int id;
    char name[16];
}Student;

Student s;

名字太長的模板類

#include<list>
struct Student
{
    int id;
};

typedef list<Student> StudentList;

typedef和#define相比

typedef unsigned int UINT32;

#define UINT32 unsigned int

不推薦使用宏定義#define,宏定義是預(yù)編譯過程棘催,typedef是編譯劲弦。宏定義只是文本替換,typedef是完全代表了unsigned int

main函數(shù)之前的函數(shù)

我們知道m(xù)ain函數(shù)是程序的入口醇坝,第一個被執(zhí)行的函數(shù)邑跪,而在引入構(gòu)造函數(shù)后,事情發(fā)生了變化呼猪。

定義一個class類型的全局變量画畅,則全局變量的構(gòu)造函數(shù)會先于main函數(shù)被執(zhí)行

#include<stdio.h>
class Object
{
public:
    Object()
    {
        printf("created!\n");
    }
};
Object obj;
int main()
{
    printf("...\n");
    return 0;
}

如果定義了多個全局變量,很難確定哪個先被構(gòu)造宋距,哪個后被構(gòu)造轴踱。所以盡量不使用全局變量,如果一定要使用谚赎,則要保證其構(gòu)造函數(shù)不要太復(fù)雜淫僻。

絕對路徑、當(dāng)前路徑沸版、相對路徑

絕對路徑又叫全路徑嘁傀,C:/windows/system32/abc.dll

當(dāng)前路徑兴蒸,指的是程序的工作目錄视粮,當(dāng)一個文件只有名字沒有目錄的時候,表示在當(dāng)前程序(.sln文件所在)目錄下創(chuàng)建

const char* filepath = "abc.txt";
FILE* fp = fopen(filepath,"wb");

在哪里運行exe文件橙凳,生成的abc.txt就在哪里蕾殴。vs里可以在項目屬性調(diào)試?yán)锩嬖O(shè)置工作目錄

在程序里可以手工寫代碼調(diào)整工作目錄

#include<windows.h>
SetCurrentDirectoryA("D:\\test\\cpp");

相對路徑

工作目錄為D:/cpp/hello

"output/abc.txt"即為D:/cpp/hello/output/abc.txt

"./output/abc.txt"即為D:/cpp/hello/output/abc.txt,點號表示在本目錄

"../abc.txt"即為D:/cpp/abc.txt岛啸,..表示在上層目錄

"../../abc.txt"即為D:/abc.txt

數(shù)組的特殊用法

數(shù)組:若干連續(xù)的元素钓觉,在內(nèi)存上也是連續(xù)的

數(shù)組名:這一塊內(nèi)存的首地址

#include<stdio.h>
void test(int arr[],int len)
{
    int n = sizeof(arr);  //值為4,此時它計算的是int arr[]的大小坚踩,是int類型的荡灾,故為4
    printf("%d\n",n);
}

int main()
{
    int arr[5]={1,2,3,4,5};
    test(arr,5);
    return 0;
}
int arr[5]={1,2,3,4,5};
int n = sizeof(arr);//值為20

int arr[5]={1,2,3,4,5};
int* p = arr;
int m = sizeof(p);//值為4

作為數(shù)組變量時,得到的是正確的大小,作為函數(shù)參數(shù)時批幌,只是一個普通的指針變量而已础锐,就是4。

二維數(shù)組的用法

int arr[2][4] = 
{
    {1,2,3,4},
    {5,6,7,8},
};

數(shù)組名就是地址荧缘,二維數(shù)組的數(shù)組名是否也可以傳地址呢皆警?

void test(int data[][4],int rows)
{
    for(int i=0;i<rows;i++)
    {
        for(int j=0;j<4;j++)
        {
            printf("%d",data[i][j]);
        }
    }
}
int main()
{
    int arr[2][4] = 
    {
        {1,2,3,4},
        {5,6,7,8},
    };
    test(arr,2);
}

或者(不推薦)

void test(int (*p)[4],int rows)
{
    for(int i=0;i<rows;i++)
    {
        for(int j=0;j<4;j++)
        {
            printf("%d",p[i][j]);
        }
    }
}
int main()
{
    int arr[2][4] = 
    {
        {1,2,3,4},
        {5,6,7,8},
    };
    int (*p)[4] = arr;
    test(arr,2);
}

頭文件的搜索目錄

把Object結(jié)構(gòu)體定義放在Object.h文件,在main.cpp使用

#include<stdio.h>
#include "Object.h"

為什么一個尖括號一個雙引號

尖括號表示從標(biāo)準(zhǔn)目錄搜索該文件截粗,雙引號表示先從當(dāng)前目錄搜索該文件信姓,再從標(biāo)準(zhǔn)目錄搜索

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绸罗,隨后出現(xiàn)的幾起案子意推,更是在濱河造成了極大的恐慌,老刑警劉巖珊蟀,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件左痢,死亡現(xiàn)場離奇詭異,居然都是意外死亡系洛,警方通過查閱死者的電腦和手機(jī)俊性,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來描扯,“玉大人定页,你說我怎么就攤上這事≌莱希” “怎么了典徊?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恩够。 經(jīng)常有香客問我卒落,道長,這世上最難降的妖魔是什么蜂桶? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任儡毕,我火速辦了婚禮,結(jié)果婚禮上扑媚,老公的妹妹穿的比我還像新娘腰湾。我一直安慰自己,他們只是感情好疆股,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布费坊。 她就那樣靜靜地躺著,像睡著了一般旬痹。 火紅的嫁衣襯著肌膚如雪附井。 梳的紋絲不亂的頭發(fā)上讨越,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音永毅,去河邊找鬼谎痢。 笑死,一個胖子當(dāng)著我的面吹牛卷雕,可吹牛的內(nèi)容都是我干的节猿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漫雕,長吁一口氣:“原來是場噩夢啊……” “哼滨嘱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浸间,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤太雨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后魁蒜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囊扳,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年兜看,在試婚紗的時候發(fā)現(xiàn)自己被綠了锥咸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡细移,死狀恐怖搏予,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弧轧,我是刑警寧澤雪侥,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站精绎,受9級特大地震影響速缨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜代乃,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一旬牲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧襟己,春花似錦引谜、人聲如沸牍陌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毒涧。三九已至贮预,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仿吞。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工滑频, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唤冈。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓峡迷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親你虹。 傳聞我的和親對象是個殘疾皇子绘搞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,392評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,746評論 0 10
  • 每個人都有自己的語言傅物,音色不同夯辖,當(dāng)然表達(dá)出來的感覺也不一樣。 我是個粗人董饰,說話也粗蒿褂,也直,也不顧后果卒暂,也肆無忌憚啄栓,...
    租客zfl閱讀 478評論 0 1
  • 不關(guān)運氣的事。我不知道高中的她是什么樣子也祠,因為她從來不提谴供,可大學(xué)四年,她是我們?nèi)底钆Φ娜顺菘溃还苤苣┕?jié)假暑假寒假...
    紅傘夜燈閱讀 110評論 0 0