C語言程式設計時遇到的若干問題

2021-08-14 18:10:22 字數 1215 閱讀 4799

還是基礎不夠紮實,有一些基本的問題都不是很清楚,這裡記錄一下,以備遺忘。

1.關於sizeof與strlen

如果變數是陣列,那麼呼叫sizeof的結果就是陣列的大小,但是如果只是乙個指標,那麼他只是返回乙個sizeof(型別)的值。

而strlen是判斷字串的長度,所以乙個陣列的最後一位是strlen(s)。

引用一下:

一、sizeof

sizeof(...)

是運算子,在標頭檔案中

typedef

為unsigned int

,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。

它的功能是:獲得保證能容納實現所建立的最大物件的位元組大小。

由於在編譯時計算,因此

sizeof

不能用來返回動態分配的記憶體空間的大小。實際上,用

sizeof

來返回型別以及靜態分配的物件、結構或陣列所佔的空間,返回值跟物件、結構、陣列所儲存的內容沒有關係。

具體而言,當引數分別如下時,

sizeof

返回的值表示的含義如下:

陣列——

編譯時分配的陣列空間大小;

指標——

儲存該指標所用的空間大小(儲存該指標的位址的長度,是長整型,應該為4);

型別——

該型別所佔的空間大小;

物件——

物件的實際占用空間大小;

函式——

函式的返回型別所佔的空間大小。函式的返回型別不能是

void

。**************

二、strlen

strlen(...)

是函式,要在執行時才能計算。引數必須是字元型指標(

char*

)。當陣列名作為引數傳入時,實際上陣列就退化成指標了。

它的功能是:返回字串的長度。該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第乙個位址開始遍歷,直到遇到結束符

null

。返回的長度大小不包括

null

。*****************

2 libssh庫呼叫

libssh庫呼叫注意之前是否存在so檔案,更新。

3 fgets與fread的區別

乙個是整行讀取,乙個是讀取指定位元組。

4 函式傳參過程,如果出現指標傳遞,那麼注意要傳送相應的指標內容大小,否則很容易造成記憶體混亂。

學習Ajax時遇到的若干問題

1.在ie中除錯出現innerhtml行錯誤 未知的執行時錯誤 最近在試著跟著書本學習ajax,我用的是visual studio2008,將示例 寫上後,發現除錯時出現題目所說的問題,後來查了若干的帖子,發現有個不錯 其中所說的解決辦法對我很有效,我就分享下了。他說有兩條解決辦法 1 將你的後台頁...

學習vue router遇到的若干問題

1.學習vue router過程中,在route index.js新增一條路由時候,報錯,如下 原因是未安裝sass loader和node sass,解決方法 npm install sass loader d npm install node sass d 安裝完之後重啟專案,又出現如下圖這個問...

C 模板的若干問題

1.為什麼要使用模板?對於特點相似的類,比如有相同的方法相似的成員,使用模板可以使得這些類得到進一步的抽象。也就是寫乙個超級形態的類。這樣至少有乙個淺顯的好處,只用寫一次。但實際上,可能更方便維護,也具有更一直的特性。對於函式,作用也類似,也就是形成乙個函式簇,這個函式簇的所做的動作是高度相似的。使...