日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

杂记3

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 杂记3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0. const受保護權限

? 請看下面的代碼片

? int num = 0;

? const int *p = #

? 這一段代碼在C語言中是可以通過的,因為num在定義的時候沒有修飾,所以權限很大,當用*p指向它的時候可以對它進行修改。

? 再看下面的代碼片:

? const int num = 0;

? int *p = #

? 這段代碼在C編譯器中會報錯,原因是,定義num的時候被const修飾,那么這個num就是受保護的,即是num不能隨便改變,所以當用*p指向它的時候會報錯。

1. printf的返回值

?C語言中printf的返回值是打印在屏幕上的字符的個數。

2. 計算一個數二進制位中1的個數

? 這里我們提供第二種方法就是,我們可以使這個數先&1,如果結果是是1,則count++,然后把這個數右移一位,再次&1,這些操作放在一個循環里面,循環32,但是這樣做循環了32,如果我只是后幾位有1,前面都是0呢,顯然這樣做的話還不是最優的結果

? 下面我們提供第三種方式,int n = 11;n = n&(n-1);這里n&(n-1)實際的操作結果就把原本的n的二進制中的最后一個1消掉了,這就是突破點。我們可以利用這個特點,做一個循環while(n != 0){count++;n=n&(n-1)};這個時候計算的count就是n中1的個數。

3. 數值和0的比較

? 整型和0的比較:if(0 == a)

?? 指針和0的比較:if(NULL == p)

?? 浮點型和0比較:if(a>-0.000000000000001&&a<0.00000000000000001)

4. 數組名

? int arr[10];

? 1.?? int sz = sizeof(arr);

? 2.?? &arr;

只有上面的這兩種數組名的使用方式時,arr代表的是整個數組,其余的方式均表示數組首元素的地址。

如:sizeof(arr + 1);它表示的就是數組下標為1的元素。

5. 用聯合體測試大小端

請看下面的代碼片
?? ?union tag{
?? ??? ?int a;
?? ??? ?char c;
?? ?}tag;
?? ?tag.a = 1;
?? ?printf("%c",tag.c);??? //因為在聯合體中,a和c使用共同的存儲空間,且他們的起始位置一致,所以當給賦值1之后,
?? ??????????????????????? //如果是小端存儲則這個1被放在了高地址,即他們的共同內存中的后面的位置,
?? ??????????????????????? //這樣使用%c打印的時候,是從開始的地方算起,所以就得到一個未知的量

6.memset的使用

? memset(地址,0,sizeof(...))

? 地址傳入的是一個地址,然后那個0是你要初始化的內容,最后的是長度習慣用sizeof進行求解,這里的長度是以字節為單位的

7.malloc申請空間后判斷

pmail->maillist = (PeoInfo*)malloc(sizeof(PeoInfo)*ALLMAX);
?? ?if (NULL == pmail->maillist)
?? ?{
?? ??? ?perror("malloc失敗");
?? ??? ?return;
?? ?}

8. 鏈表操作

?鏈表中有一些內容不好操作時,比如刪除屋頭節點的非尾節點,或者在鏈表前面插入一個元素,想著用賦值操作

9.pmail->maillist = realloc((pmail->maillist), sizeof(PeoInfo)*((pmail->MAX) + 3));

總結

以上是生活随笔為你收集整理的杂记3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。