C語言小知識點

2021-09-12 17:30:19 字數 2009 閱讀 5294

比較難歸類,就單獨列舉在這裡

無型別識別符號,只能宣告函式的返回型別,不能宣告變數,可以宣告指標

int a;

a=55;

&a——代表a的位址

*&a——代表*(位址)——就為位址對應的值,就是55

先來看看整數儲存的例子

#include#includeusing namespace std;

#define print_int(n) printf(#n "= 0x%p\n" ,&n)

int main()

執行結果為:

可以看出,變數分配位址以 a,b,c,i 降序分配,且他們是連續的  

如果**改一下: 

雖然char 只占用了乙個位元組,但是由於位元組對齊,下乙個int型也是從38開始(相當於char佔了 c)

給定乙個數n,n除以從2到sqrt(n)之間的每乙個數,只要有乙個餘數為0,n就不是素數

bool is_prime(int n)

for(divisor = 2;divisor*divisor<=n;divisor++)

}return true;

}

當形式引數是一維陣列時,可以不說明陣列長度

int fun(int a)

#define len 100

int main(void)

二維陣列,必須給出列的數量

int fun(int a[len])

%d——列印十進位制                        %g——列印浮點數%o——列印八進位制                        %c——列印乙個字元%x——列印十六進製制                     %s——列印乙個字串%d——讀取整型值int                    %ld——讀取長整型值 long%f——讀取浮點數float                  %lf——讀取雙精度長整型值double

%c——讀取乙個字元                     %s——讀取乙個字串

if(3==i);

而不是if(i==3);

因為寫成if(i=3);時不會報錯,但是if(3=i);一定會報錯。

這個小點最開始是,華為海思物理層的李雲東師兄告訴我的,感謝李師兄

無論在什麼時候,如果遇見了這樣一條語句malloc(strlen(str));,幾乎可以斷定它是錯誤的,而malloc(strlen(str)+1)才是正確的。這是因為其他的字串處理庫函式幾乎都包含乙個額外空間,用於容納字串結尾的『\0』字元。

主函式內:

initialize_number_generator();

int a = rand() % 100 +1;

生成1~100的隨機數

C語言知識點小總結

定義和宣告的最大區別在於 定義建立了變數 物件 並為這個物件分配了記憶體。宣告 只是告訴編譯器這個變數名被提前預定了 register要求編譯器盡可能的將變數放在cpu內部暫存器中,而不會是通過記憶體定址訪問以提高效率。break可以跳出所有迴圈 do while while for 迴圈語句的主要...

c 小知識點

1 陣列間拷貝只能使用for迴圈乙個乙個拷貝,但是vector之間可以直接用乙個vector初始化另乙個vector。int main 2 vector 之間比較大小直接用 3 對於實參型別相同,並且數目不確定的情況下我們可以傳遞名為initializer list的標準庫型別。int func s...

C 小知識點

1.在c 中,每個程式必須包含乙個main 的入口函式,只有這樣,這個專案才能執行.2.函式包括 函式名,引數,返回值.3.return 是c 的預定義語句,提供了終止函式的一種方法 return 0表示成功執行正常退出.4.using namespace std 是指引用c 的標準庫.5.c 的4...