日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

liunxC下零碎知识点的总结

發(fā)布時(shí)間:2024/4/13 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 liunxC下零碎知识点的总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.簡(jiǎn)述Makefile的作用
makefile關(guān)系到了整個(gè)工程的編譯規(guī)則。一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,因?yàn)閙akefile就像一個(gè)Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。
makefile帶來(lái)的好處就是——“自動(dòng)化編譯”,一旦寫(xiě)好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開(kāi)發(fā)的效率。
2.sizeof與strlen的區(qū)別:
sizeof(…)是運(yùn)算符,在頭文件中typedef為unsigned int,其值在編譯時(shí)即計(jì)算好了,參數(shù)可以是數(shù)組、指針、類型、對(duì)象、函數(shù)等。
它的功能是:獲得保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。
strlen(…)是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。參數(shù)必須是字符型指針(char*)。當(dāng)數(shù)組名作為參數(shù)傳入時(shí),實(shí)際上數(shù)組就退化成指針了。
它的功能是:返回字符串的長(zhǎng)度。該字符串可能是自己定義的,也可能是內(nèi)存中隨機(jī)的,該函數(shù)實(shí)際完成的功能是從代表該字符串的第一個(gè)地址開(kāi)始遍歷,直到遇到結(jié)束符NULL。返回的長(zhǎng)度大小不包括NULL。
3.什么是野指針?如何避免野指針。
野指針:指向不確定地址的指針變量。避免方法:
1.不去訪問(wèn)沒(méi)有權(quán)限的內(nèi)存(平時(shí)我們正確使用指針的時(shí)候,系統(tǒng)應(yīng)經(jīng)將相應(yīng)的內(nèi)存分配給用戶,但是如果指向沒(méi)有分配的內(nèi)存,系統(tǒng)會(huì)判定我們沒(méi)有權(quán)限)
2.不去訪問(wèn)已經(jīng)釋放了的內(nèi)存
4.c語(yǔ)言分配內(nèi)存的方式有哪些?
c語(yǔ)言中常見(jiàn)的內(nèi)存錯(cuò)誤有哪些?
分配內(nèi)存:1、從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在,例如全局變量,static變量。

2、在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放,棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,凡是分配的內(nèi)存容量有限。

3、從堆上分配。也稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或者new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free或者delete釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期有程序員決定,使用非常靈活,但如果在堆上分配了空間,就有責(zé)任回收他。否則運(yùn)行的程序會(huì)出現(xiàn)內(nèi)存泄漏,頻繁的分配和釋放不同大小的堆空間將會(huì)產(chǎn)生堆內(nèi)碎塊。
內(nèi)存錯(cuò)誤:1、指針沒(méi)有指向一塊合法的內(nèi)存 2、為地址分配的內(nèi)存太小 3、內(nèi)存分配成功,但并未初始化 4、內(nèi)存越界 5、內(nèi)存泄漏 6、內(nèi)存已經(jīng)釋放,但是繼續(xù)通過(guò)指針來(lái)使用
5.Static全局變量與普通變量的區(qū)別?
Static局部變量與普通局部變量的區(qū)別?
static函數(shù)與普通函數(shù)的區(qū)別?
static全局變量與普通的全局變量的區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量的區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
static函數(shù)與普通函數(shù)的區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝
6.#include <> 和 #include “” 有什么區(qū)別?
#include< >引用的是編譯器的類庫(kù)路徑里面的頭文件。
#include“ ”引用的是你程序目錄的相對(duì)路徑中的頭文件。
7.char *const p; char const *p; const char p 三者的區(qū)別。
第一個(gè)和第三個(gè)是一樣的, p都是指向const char類型的指針, 不可以賦值給p, 就是不可通過(guò)這個(gè)指針改變它指向的值.
第二個(gè): char * const p是指向char的常指針, 指針需在聲明時(shí)就初始化, 之后不可以改變它的指向.

總結(jié)

以上是生活随笔為你收集整理的liunxC下零碎知识点的总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。