C語言筆試常考知識點

1. const 關鍵字

? ? a) ?const int a;

? ? b) ?int const a;

? ? c) ?const int *a;

? ? d) ?int * const a;

? ? e) ?int const * const a;

解析:

? ? a) ?a為一個int型變量,在它被定義時就應當對其初始化,因為以后就沒有機會再去改變它了。

? ? b) ?與 a) 是一個意思,const 與 int 的位置可以互換。

? ? c) ?const 與 int 修飾的都是 (*a) ,這里的a是一個指向 int 型變量的指針,指針 a 的值可以被修改,(*a) 即 a 指向的變量不能被修改。

? ? d) ?const 修飾 a, 而int 修飾 (*a) ,這里的a是一個指向 int 型變量的指針,指針 a 的值不能被修改,(*a) 即 a 指向的變量可以被修改。?

? ? e) ?指針 a 的值與 (*a)即a指向的變量均不能被修改。

總結:

? ? 1) ?如果 const 與 int 是挨在一起的,中間沒有*,則兩者的位置是可以互換的。

? ? 2) ?如果 const 或是 int 之后是*,則 const 或是 int 修飾的是(*a),即修飾的是指針 a 指向的變量。

?

2. (*((void?(*)(?))0x80004000)) (?)

解析:

? ? 先看?(void?(*)(?))0x80004000 。

? ? 其中的?void?(*)(?) 是函數指針類型,該函數的形參為空,返回值類型為 void 。

? ? 于是,(void?(*)(?))0x80004000 就是表示,將?0x80004000 強制轉換為?void?(*)(?) 類型的函數指針,即0x80004000是某函數的入口地址。

? ? 然后,請回憶一下 (*p)() 是什么意思?沒錯,這是用函數指針調用函數的形式。

? ? 那么,(*((void?(*)(?))0x80004000)) (?) 就是表示,調用某一個函數, 該函數的入口地址為0x80004000,該函數的形參為空,無返回值。

?

3. void * ( * (*fp1)(int))[10];?

? ? float (*(* fp2)(int,int,int))(int);

? ? int (* ( * fp3)())[10]();

? ? 分別表示什么意思??
解析: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? 1. void * ( * (*fp1)(int))[10]; ??fp1是一個指針,指向一個函數,這個函數的參數為int型,函數的返回值是一個指針,這個指針指向一個數組,這個數組有10個元素,每個元素是一個void*型指針。

? ? 2. float (*(* fp2)(int,int,int))(int); ??fp2是一個指針,指向一個函數,這個函數的參數為3個int型,函數的返回值是一個指針,這個指針指向一個函數,這個函數的參數為int型,函數的返回值是float型。?

? ? 3. int (* ( * fp3)())[10](); ??fp3是一個指針,指向一個函數,這個函數的參數為空,函數的返回值是一個指針,這個指針指向一個數組,這個數組有10個元素,每個元素是一個指針,指向一個函數,這個函數的參數為空,函數的返回值是int型。?

?

4. 有關指針的數據類型的小結

定義含義
int i;定義整型變量i
int *p;p為指向整型數據的指針變量
int a[n];定義整型數組a,它有n個元素
int *p[n];定義指針數組p,它由n個指向整型數據的指針元素組成
int (*p)[n];p為指向含n個元素的一維數組的指針變量,每一個元素均為整型數據
int (*p)[n]();

p為指向含n個元素的一維數組的指針變量,每一個元素均為一個函數指針,該函數無形參,返回int型數據

int f();f為帶回整型數值的函數
int *p();p為帶回一個指針的函數,該函數指向整型數據
int (*p)();p為指向函數的指針,該函數返回一個整型數據
int **p;p為一個指針變量,它指向一個指向整型數據的指針變量

參考文檔:《徹底搞定C指針》

轉載于:https://www.cnblogs.com/outs/p/5103868.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458463.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘋果應用上架,一些信息的勾選(2017年4月27日)

1、分級的各種選項的選擇全部選否 (我們公司是醫療相關的app,醫療的選項也是選擇的否) 2、

jsp頁面路徑問題

jsp路徑默認不是項目跟路徑 一、 <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String basePath request.getScheme() "://" request.getServerName() …

C# 線程池ThreadPool

什么是線程池&#xff1f;為什么要用線程池&#xff1f;怎么用線程池&#xff1f; 1. 什么是線程池&#xff1f;.NET Framework的ThreadPool類提供一個線程池&#xff0c;該線程池可用于執行任務、發送工作項、處理異步 I/O、代表其他線程等待以及處理計時器。那么什么是線程池…

蘋果應用上架,圖片的要求(2017年4月27日)

看這個提示應該就明白了吧。 哈哈&#xff0c;我還是自己再說一遍加深一下印象吧&#xff1a;如果應用在各個尺寸iphone屏幕上面外觀一樣&#xff0c;就只準備5.5英寸的圖就可以了&#xff1b;如果有所不同&#xff0c;就按照實際情況&#xff0c;準備不同屏幕尺寸的圖片即可。…

jQuery操作checkbox

2012歐洲杯"死亡之組"小組出線的國家隊是&#xff1a;<br> <inputtype"checkbox"name"nation"value"Germany">德國 <inputtype"checkbox"name"nation"value"Denmark">丹麥 <input…

android Instrumentation 轉載

Android提供了一系列強大的測試工具&#xff0c;它針對Android的環境&#xff0c;擴展了業內標準的JUnit測試框架。盡管你可以使用JUnit測試Android工程&#xff0c;但Android工具允許你為應用程序的各個方面進行更為復雜的測試&#xff0c;包括單元層面及框架層面。Android測試…

Linker command failed with exit code 1(use -v to see invocation)

Linker command failed with exit code 1(use -v to see invocation) 出現這個問題的原因是&#xff1a;工程當中存在相同的文件&#xff0c;找到該文件將其刪除即可

【C#學習筆記】使用C#中的Dispatcher

form:https://www.jianshu.com/p/0714fc755988之前的文章說過了如何使用BackgroundWorker&#xff0c;今天要說的是WPF程序員處理多線程的另外一個方式 - Dispatcher當我們打開一個WPF應用程序即開啟了一個進程&#xff0c;該進程中至少包含兩個線程。一個線程用于處理呈現&…

流媒體 關鍵詞解釋

流媒體 流媒體是指采用流式傳輸的方式在網上播放的媒體格式, 是邊傳邊播的媒體&#xff0c;是多媒體的一種! 然后就是大家需要了解的幾個關鍵詞 幀:視頻是由很多連續圖像組成, 每一幀就代表一幅靜止的圖像 GOP:&#xff08;Group of Pictures&#xff09;畫面組&#xff0c;一個…

[C#] 等待啟動的進程執行完畢

from: https://www.cnblogs.com/qqhfeng/p/4769524.html有能有時候我們啟動了一個進程&#xff0c;必須等到此進程執行完畢&#xff0c;或是&#xff0c;一段時間&#xff0c; 關閉進程后再繼續往下走。Example sample1 等待應用程序執行完畢 //等待應用程序執行完畢private vo…

html body標簽

table table 屬性&#xff1a; border &#xff1a;定義表格的邊框寬度&#xff0c;默認為0&#xff0c;即無邊框。<table border"1"> title &#xff1a;表格的提示信息&#xff0c;當鼠標移到表格上方時&#xff0c;所提示的信息。 cellpadding &#xff1a;…

創建字符串的方法

//創建一個字符串常量 NSString *str"字符串"; //創建一個空的字符對象 NSString *str1[[NSString alloc]init];//實例方法 NSString *str2[NSString string];//類方法 //快速創建一個字符串 NSString *str3[[NSString alloc]initWithString:"字符串"];//實…

DataReceivedEventHandler 委托 接收調用執行進程返回數據

https://msdn.microsoft.com/zh-cn/library/azure/system.diagnostics.datareceivedeventhandler備注創建 DataReceivedEventHandler 委托時&#xff0c;需要標識將處理該事件的方法。 若要將事件與事件處理程序關聯&#xff0c;請將該委托的一個實例添加到事件中。 除非移除了…

coreData

CoreData使用 創建步驟流程 第一步先創建.xcdatamodeld文件&#xff08;New File -> iOS -> Core Data ->Data Model&#xff09; 屏幕快照 2016-07-07 下午10.40.16.png名字雖然可以任意取&#xff0c;但最好還是取和自己存儲數據庫名字一樣的名字。這樣可讀性更高些…

命令行下mysql新建用戶及分配權限

創建用戶&#xff1a; CREATE USER usernamehost IDENTIFIED BY password; 說明:username – 你將創建的用戶名, host – 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如 果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password – 該用戶的登陸密…

PetaPoco初體驗(轉)

PetaPoco初體驗&#xff08;轉&#xff09; PetaPoco初體驗&#xff08;轉&#xff09;大部分轉自&#xff1a; http://landyer.com/archives/138 PetaPoco C#微型ORM框架&#xff0c;基本無需配置&#xff0c;僅由單個cs文件構成&#xff0c;支持.net3.5 .net4.0。 截稿時Peta…

iOS當中的設計模式

代理模式 應用場景&#xff1a;當一個類的某些功能需要由別的類來實現&#xff0c;但是又不確定具體會是哪個類實現。 優勢&#xff1a;解耦合 敏捷原則&#xff1a;開放-封閉原則 實例&#xff1a;tableview的 數據源delegate&#xff0c;通過和protocol的配合&#xff0c…

c#的dllimport使用方法詳解

DllImport是System.Runtime.InteropServices命名空間下的一個屬性類&#xff0c;其功能是提供從非托管DLL&#xff08;托管/非托管是微軟的.net framework中特有的概念&#xff0c;其中&#xff0c;非托管代碼也叫本地&#xff08;native&#xff09;代碼。與Java中的機制類似&…

each函數循環數據表示列舉,列舉循環的時候添加dom的方法

var dotBox $(#bannerNum);var item <li></li>;var itemSize $(#bannerBack p).length;var dotBoxWidth itemSize*24;$(#bannerBack p).each(function () { dotBox.append(<li></li>); dotBox.find(li).eq(0).addClass(current);});這里要根…

使用lxml代替beautifulsoup

深入使用過lxml的都會深深地喜歡上它,雖然BeautifulSoup很流行,但是深入了解lxml后,你就再也不會使用bs了 我覺得beautifulsoup不好用,速度也慢(雖然可以使用lxml作為解析器了).另外soup.find_all這種簡直就是手工時代的操作(很多人使用find find_all這幾個函數, 其實它們使用起…