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

來源:互聯網
上載者:User
C語言筆試題容易忽略的一些細節

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

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

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

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

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

(D)兩者可能等價

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

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

帶<>是只直接調用系統檔案,而不去尋找目錄所包含的檔案。

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

問題二:記憶體對齊

struct

{

  short s; 

  char c;

  float f;

}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++中,為什麼前自增操作產生左值,後自增操作產生右值?為什麼有這樣的區別?

  前自增返回的就是自增後的“自己”(引用),而後自增返回的是自增前“自己的副本(臨時變數)”。

  前自增操作先對對象本身操作,然後返回對象本身,一般返回引用,可以被賦值;
  後自增操作一般用一個臨時變數儲存對象,然後對對象操作,返回臨時變數,這個臨時變數一般來說是右值,不能修改。

  

以後慢慢匯總。。。。。。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.