C語言技術點使用

2021-08-20 19:57:08 字數 2405 閱讀 1664

解析:~是位取反的意思。

_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,...