C語言要注意的一些小細節

2021-05-28 01:31:31 字數 1395 閱讀 7809

今天的筆試雖然很簡單,但是有些地方考察的很細。平常不注意看很容易忽略。所以基礎很重要。

問題一:關於#include <*.h> 與#include "*.h"的說法錯誤的是:()

(a)#include <*.h>只搜尋系統路徑

(b)#include "*.h"只搜尋使用者檔案

(c)#include "*.h"先搜尋使用者檔案,再去系統路徑搜尋

(d)兩者可能等價

註解:題目本意大概是這樣。(b)

帶"" 意思是表示先在當前程式所在的目錄查詢所包含的檔案,,如果沒有就查詢系統檔案。

帶<>是只直接呼叫系統檔案,

而不去查詢目錄所包含的檔案。

所以一般呼叫系統標頭檔案都是用<>這樣速度更快,使用者的標頭檔案就用""。

問題二:記憶體對齊

struct

cs;

sizeof(cs),這道題出題人給的選項居然沒有正確答案。應該是8,(2+1)+1+4=8。當時想著都要向4位元組靠齊,4+4+4=12。

問題三:引用與指標的區別

從根本理解,引用是變數的別名;指標是指向變數的位址。詳細的話可以從下面三點考慮:

引用的規則:

(1)引用被建立的同時必須被初始化(指標則可以在任何時候被初始化)。

(2)不能有null引用,引用必須與合法的儲存單元關聯(指標則可以是null)。

(3)一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件)。

問題四:運算子優先順序

a&b>>2:分不清&還是》優先順序高。優先順序記憶方法:

去掉乙個最高的,去掉乙個最低的;

剩下的是

一、二、三、賦值;

雙目運算子中,順序為算術、關係和邏輯,移位和邏輯位插入其中。

問題五:隱式型別轉換

已知:int a=2,b=4,c=3;下面與a+b+c(=9)值不相等的項為:bc 

(a)(a+b)*c/2 (=9)   (b)1/2*(a+b)*c (=0)  (c)c/2*(a+b) (=6)

問題六:前自增後自增與左值、右值

在c++中,為什麼前自增操作生成左值,後自增操作生成右值?為什麼有這樣的區別?

前自增返回的就是

自增後的「自己」(引用),而後自增返回的是

自增前「自己的副本(臨時變數)」。

前自增操作先對物件本身操作,然後返回物件本身,一般返回引用,可以被賦值;

後自增操作一般用乙個臨時變數儲存物件,然後對物件操作,返回臨時變數,這個臨時變數一般來說是右值,不能修改。

以後慢慢彙總。。。。。。

C語言筆記 一些小細節

2.char ex 5 4 scanf s ex 無需取位址符 因為字元陣列本身是指標。3.12s中 表示向左對齊 預設向右對齊 12 表示佔12個位元組。4.定義乙個陣列,比如char ex n n應為恒量,如 define n 5 或const int n 5 5.不支援字元陣列的直接賦值,需要...

那些年,mfc開發中要注意的一些小細節

1 給你的視窗加上最下化按鈕,方法 設定視窗的minimize box屬性為true 2 若你的視窗不需要改變大小,方法 設定視窗的border屬性為dialog frame 3 若你的視窗為主視窗,考慮過濾掉回車和esc操作 方法 實現虛函式pretranslatemessage bool xdl...

C 一些小細節

一 class 類 與 inlcude 類.h 的區別 class 類的使用,只是宣告有這麼乙個類,但是沒辦法呼叫類裡面的函式 而 include則可以 例如 pragma once include cocos2d.h include class scenemanger using ns cc cl...