那些年C語言走過的坑

2021-09-22 18:45:18 字數 1850 閱讀 7995

在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。

例如:int a1, a2, b = 2,c = 7, d = 5;

a1 = (++b, c–, d++);

a2 = ++b, c–, d++;

其中第 2,3行就是使用了逗號運算子。

但是這兩個表示式表達的意思不盡相同。

逗號運算的結合性是從左至右,完畢後整個表示式的值根據有無括號而不同。如果加上括號,則返回最後乙個運算,沒有就返回第乙個。

例題中的計算結果a1 = 5,a2 = 4,其原理就是在計算a1的時候返回的是最後乙個運算即d++(a1 = d++ = 5(先賦值再再進行加一操作)),但是此時b已經進行過了++b運算 值為3,c進行了c–運算 值為6);計算a2的時候返回的是第乙個運算即++b(先加一再賦值),得a2值為4, 但是計算從左至右直到分號結束,則再進行c–操作,接著就是d++操作。

巨集定義是c語言提供的三種預處理功能的其中一種(巨集定義,檔案包含,條件編譯),巨集定義和操作符的區別在於巨集定義是替換,不做計算,也不做表示式求解,故又稱巨集代換、巨集替換。

#define 識別符號 內容

其中識別符號又可稱為巨集名, 一般採用的是大寫

例:#define pi 3.1415926

巨集定義能提高程式的通用性和可讀性,減少輸入錯誤,便於修改

在編譯前處理,即不盡興語法檢查

巨集定義可以使用#undef命令終止其作用範圍

巨集定義允許巢狀

巨集定義中不存在變數型別,也沒有型別轉換

巨集定義中可以使用變數進行使用,呼叫的時候傳參就好

*巨集定義只替換, 不做計算,也不做表示式求解

#define m(x,y,z) x*y+z

#include

intmain()

只替換,不計算->a+b*b+c+c+a =12;

而不是(a+b)*(b+c)+(c+a) =

19;

當我們把乙個指標作為引數傳給乙個函式的時候,其實只是把指標的副本傳遞了過去,也可以說傳遞指標是指標的按值傳遞。儘管它是乙個指標,但如果我們在函式內部修改指標會出現問題,在方法裡做修改只是修改指標的副本而不是指標本身,原來的指標還保留著原來的值。如果想用真正傳遞,可以使用二級指標或者指標的引用。

如果進行的是指標的引用,這個時候傳入的不是指標的副本了,而是指標的本身,相當於取了個別的名字而本質未改變,改變了它的指向或者值,相應的全部都改變了。

#include

#include

#include

void

getmemory

(char

*p)int

main()

ps:這個時候輸出的就是null了,因為strcpy(p,

"hello world")改變的只是主函式中str的副本,

而不是它本身,當函式結束後返回主函式,str依舊指向空。

#include

main

(void);

int*ptr=

(int*)

(&a+1)

;printf

("%d,%d",*

(a+1),

*(ptr-1)

);}

陣列名就是乙個指標,這樣假設有個 p = int()(&a)這個時候p就是指向a這個一維陣列的指標,即陣列指標, 而這個時候p的步長就是a陣列的長度,即(p+1)將跨過n個整型資料的長度; ptr也是乙個陣列指標,不過進行了加一操作,即跳出了陣列a的範圍,進行(ptr-1)操作則回到陣列,此時指向的是a陣列的末尾元素即a[4];所以輸出的結果是 2, 5;

安裝 SDE for Oracle 走過的那些坑

最近工作需要我搞一下通過 arcsde for oracle,使用 sql 語句繼續空間資料表的操作。這個內容,很久很久以前,我做過,如今都忘了,需要撿起來。這次 esri 和oracle果然不負所望,給了我好幾個坑,以下為部分過程介紹及經驗總結。原則 占用資源少,啟動快,所以都盡量選擇版本低的軟體...

那些年,我們一起走過的iOS推送的坑

本文由信鴿工程師uwei提供。那麼,整合推送需要注意些什麼?整合之後,怎樣確認自己是否正確整合了遠端訊息推送呢?相信ios開發的同學對下圖來說是比較眼熟的 以上就是xcode不同版本中關於推送的配置是不同的,表現如上,但是不同點具體在哪兒呢?使用如下命令 security cms d i embed...

那些年,騰訊走過的運營路

一.使用者運營 外部團隊的故事 第乙個分享的故事,是我在qq秀做運營的時候,與qq秀的外部團隊打交道的故事。這個外部團隊相當於qq秀粉絲的集合,或者說是優質粉絲的團隊。外部團隊是由對qq秀這個產品特別喜歡的使用者組成,這些人不僅僅是粉絲,還承擔了產品宣傳 內容構建 產品體驗等工作。關於外部團隊,我們...