解析:~是位取反的意思。
_intsizeof(n)整個做的事情就是將n的長度化為int長度的整數倍。
比如n為5,二進位制就是101b,int長度為4,二進位制為100b,那麼n化為int長度的整數倍就應該為8。
~(sizeof(int) - 1) )就應該為~(4-1)=~(00000011b)=11111100b,這樣任何數& ~(sizeof(int) - 1) )後最後兩位肯定為0,就肯定是4的整數倍了。
(sizeof(n) + sizeof(int) - 1)就是將大於4m但小於等於4(m+1)的數提高到大於等於4(m+1)但小於4(m+2),這樣再& ~(sizeof(int) - 1) )後就正好將原長度補齊到4的倍數了。
取乙個數(len)除以4後的餘數
len & 3;
把乙個整數轉化成乙個位址
比如,位址 0x12ff 裡面存放的是數是5,
然後定義了乙個int *p;
想讓p指向變數5,
如何才能讓p存放的位址是0x12ff?
int *p=(int *)0x12ff;
break使用
在兩層while(1)迴圈中,break只會跳出最裡面那層while迴圈。
extern使用
extern 與函式
函式的宣告和定義均可以不使用extern。
第一套方案(不使用標頭檔案的方案)
a.c中定義乙個函式fun():
int fun(void) //定義
return 0;
b.c中呼叫fun():
int fun(void);//先宣告
int main()
fun();//呼叫
或者可以有第二套方案(使用標頭檔案的方案)
假設第一套方案中有b.c,c.c,d.c都要呼叫a.c中的fun(),總不能在每個.b~d.c檔案中都宣告一下吧,所以我們把這個宣告寫在標頭檔案裡,例如
a.hint fun(void);//宣告
然後b~d.c中包含這個標頭檔案,然後就可以呼叫了。
extern 與變數
呼叫a中的全域性變數num
a.c中
int num=0;//定義num,這裡寫成
extern int num=0;也可以,寫成
int num;也可以,都是定義。
唯獨不能寫成 extern int num;因為這是宣告。
a.h中
extern int num;//宣告num
b.c中
#include "a.h"
num=1;//對num進行操作
注:其實關注點不應該是extern,而應該是變數的宣告與定義。定義一定要有,且只有一次,而宣告可以多次,變數宣告並非一定要標頭檔案中,只是因為在標頭檔案中可以被多個原始檔包含(其實就是變相的多個原始檔都宣告這個變數)。
如果上述變數不使用標頭檔案,則可以選擇與上述的函式第二個方案一樣,直接在要呼叫該變數的原始檔中,即b.c中宣告一下,即extern int num;然後使用。
static使用
static在函式的宣告與定義中,都需要注意,這個函式不能用在外部,不然會報錯,其他的檔案沒有對這個函式的定義。
sprintf使用技巧(使用
%.5s
指定字串長度為5,不管name長度有多少)
#include #include int main()
列印的結果:cmd is c:\users\sunny\desktop\testf.txt
生成的檔案testf.txt開啟後
testforsprintf
注意:testforsprintf後有乙個空格。
將兩個有序陣列組合成乙個有序陣列。
例:將兩個從小到大排序的陣列col1和col2組合成乙個從小到大的陣列dest。
void mergekernelcolumns (const float *col1, const float *col2, unsigned int num1, unsigned int num2, float *dest)
else
unsigned i = 0, j = 0;
while (i < min_num && j < min_num)
for (; i < min_num; ++i, ++dest)
for (; j < min_num; ++j, ++dest)
}
neon指令,雜湊演算法 C語言指標使用的注意點
第一題 main 執行結果是什麼?第二題 void fun char str1,char str2 main 程式執行結果是 第三題 main short par ar 1 inti for i 0 i 10 i 程式執行結果是 第四題 main p q ar p printf 5d p q pri...
C 技術點積累 9 補充
1 三目運算子 c語言中的三目運算子 include stdio.h void main 修改 include stdio.h void main c 中的三目運算子 includeusing namespace std void main 2 const 3 define和const void d...
c語言使用中的一點感慨
typedef struct struct teststruct test 正確使用二級指標方式 void test fuction struct test pp int main int argc,char argv struct test p 0 test fuction p printf d,...