亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c.txt

?? C語言編程常見問題解答 這個帖子將不斷擴充、更新 羅列大部分C語言編程的常見問題 希望各位觀眾支持幫助 畢竟一人之力太有限
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
}

  其中的“=”符號是輸入錯誤。如果在說明str時沒有使用const修飾符,那么相應的程序能通過編譯但不能被正確執行。
    第二個原因是效率。如果編譯程序知道某個變量不會被修改,那么它可能會對生成的代碼進行某些優化。    
    如果一個函數參數是一個指針,并且你不希望它所指向的數據被該函數或該函數所調用的函數修改,那么你應該把該參數說明為const指針。如果一個函數參數通過值(而不是通過指針)被傳遞給函數,并且你不希望其值被該函數所調用的函數修改,那么你應該把該參數說明為const。然而,在實際編程中,只有在編譯程序通過指針存取這些數據的效率比拷貝這些數據更高時,才把這些參數說明為const。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-5 23:11:23

--  
10.對不同類型的變量進行算術運算會有問題嗎?
    C有三類固有的數據類型:指針類型、整數類型和浮點類型;
    指針類型的運算限制最嚴,只限于以下兩種運算:
    -  兩個指針相減,僅在兩個指針指向同一數組中的元素時有效。運算結果與對應于兩個指針的數組下標相減的結果相同。    
    +  指針和整數類型相加。運算結果為一個指針,該指針與原指針之間相距n個元素,n就是與原指針相加的整數。
    浮點類型包括float,double和longdouble這三種固有類型。整數類型包括char,unsigned char,short,unsigned short,int,unsigned int,long和unsigned long。對這些類型都可進行以下4種算術運算:
    +  加    
    -  減
    *  乘    
    /  除
    對整數類型不僅可以進行上述4種運算,還可進行以下幾種運算:
    %    取模或求余    
    >>    右移
    <<    左移
    &    按位與
    |    按位或
    ^    按位異或
    !    邏輯非
    ~    取反
    盡管C允許你使用“混合模式”的表達式(包含不同類型的算術表達式),但是,在進行運算之前,它會把不同的類型轉換成同一類型(前面提到的指針運算除外)。這種自動轉換類型的過程被稱為“運算符升級(operator promotion)”。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-6 12:27:15

--  
11.什么時候應該使用類型強制轉換(typecast)?
    在兩種情況下需要使用類型強制轉換。第一種情況是改變運算分量的類型,從而使運算能正確地進行。下面的程序與2.12中的例子相似,但有不同之處。變量n被賦值為整數i除以整數j的結果,因為是整數相除,所以結果為0。變量f2也被賦值為i除以j的結果,但本例通過(float)類型強制轉換把i轉換成一個float類型,因此執行的是浮點數除法運算(見2.11),結果為0.75。
#include <stdio.h>
main ( )
{
   int i = 3;
   int j = 4
   float f1 =i/j;
   float f2= (float) i/j;
   printf("3/4== %g or %g depending on the type used. \\n",f1, f2);
}

第二種情況是在指針類型和void * 類型之間進行強制轉換,從而與期望或返回void指針的函數進行正確的交接。例如,下述語句就把函數malloc()的返回值強制轉換為一個指向foo結構的指針:
    struct foo *p=(struct foo *)malloc(sizeof(struct foo)); 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-6 12:27:35

--  
12.什么時候不應該使用類型強制轉換(typecast)?
   不應該對用const或volatile說明了的對象進行類型強制轉換,否則程序就不能正確運行。
   不應該用類型強制轉換把指向一種結構類型或數據類型的指針轉換成指向另一種結構類型或數據類型的指針。在極少數需要進行這種類型強制轉換的情況下,用共用體(union)來存放有關數據能更清楚地表達程序員的意圖。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-6 12:28:10

--  
13.可以在頭文件中說明或定義變量嗎?
    被多個文件存取的全局變量可以并且應該在一個頭文件中說明,并且必須在一個源文件中定義。變量不應該在頭文件中定義,因為一個頭文件可能被多個源文件包含,而這將導致變量被多次定義。如果變量的初始化只發生一次,ANSIC標準允許變量有多次外部定義;但是,這樣做沒有任何好處,因此最好避免這樣做,以使程序有更強的可移植性。

--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-6 13:06:19

--  
14.哪一種排序方法最方便?
    答案是C標準庫函數qsort(),理由有以下三點:
    (1)該函數是現成的;    
    (2)該函數是已通過調試的;
    (3)該函數通常是已充分優化過的。
    qsort()函數通常使用快速排序算法,該算法是由C. A.R.Hoare于1962年提出的。以下是qsort()函數的原型:
    void qsort(void *buf,size_t hum,size_t size,
    int(*comp)(const void *ele1,const void *ele2));
    qsort()函數通過一個指針指向一個數組(buf),該數組的元素為用戶定義的數據,數組的元素個數為num,每個元素的字節長度都為size。數組元素的排序是通過調用指針comp所指向的一個函數來實現的,該函數對數組中由ele1和ele2所指向的兩個元素進行比較,并根據前者是小于、等于或大于后者而返回一個小于、等于或大于0的值。   
    例3.1中給出了一個函數sortStrings(),該函數就是通過qsort()函數對一個以NULL指針結束的字符串數組進行排序的。將例3.1所示的代碼和本章結尾的有關代碼一起編譯成一個可執行程序后,就能按字母順序對一個以NULL指針結束的字符串數組進行排序了。

1:#include<stdlib. h>
2:
3: /*
4:  * This routine is used only by sortStrings(), to provide a
5:  * string comparison {unction to pass to qsort().
6:  */
7: static int comp(const void * elel, const void * ele2)
8: {
9:    return strcmp( * (const char * * ) ele1,
10:                * (const char * * ) ele2);
11: }
12:
13: / * Sort strings using the library function qsort() * /
14: void sortStrings(const char * array[-\'])
15: {
16,       /* First, determine the length of the array * /
17:       int num;
18:
19:      for (num=O; array[num]; num++)
20:
21:      qsort(array, num, sizeof( * array), comp) ;
22: }

在例3.1中,第19行和第20行的for循環語句用來計算傳遞給qsort()函數的數組元素個數,函數comp()的作用是將函數qsort()傳遞給它的類型(const void *)轉換為函數strcmp()
所要求的類型(const char *)。因為在函數qsort()中,ele1和ele2是指向數組元素的指針,而在例3.1中這些數組元素本身也是指針,因此,應該先將ele1和ele2轉換為const char **類型,然后在轉換結果前加上指針運算符“*”,才能得到函數strcmp()所要求的類型。
    盡管有qsort()函數,但程序員經常還要自己編寫排序算法程序,其原因有這樣幾點:第一,在有些異常情況下,qsort()函數的運行速度很慢,而其它算法程序可能會快得多;第二,qsort()函數是為通用的目的編寫的,這給它帶來了一些不利之處,例如每次比較時都要通過用戶提供的一個函數指針間接調用一個函數;第三,由于數組元素的長度在程序運行時才能確定下來,因此用來在數組中移動數組元素的那部分代碼沒有針對數組元素長度相同的情況進行優化;第四,qsort()函數要求所有數據都在同一個數組中,而在實際應用中,數據的長度和性質千變萬化,可能很難甚至無法滿足這一要求;第五,qsort()函數通常不是一種穩定的排序方法。

--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發布時間:2005-4-6 13:07:41

--  
15.哪一種排序方法最快?
    首先,對大多數包含排序應用的程序來說,排序算法的速度并不重要,因為在程序中排序  的工作量并不是很多,或者,與排序相比,程序中其它操作所花費的時間要多得多。
    實際上,沒有哪一種排序算法永遠是最快的,在運行程序的軟硬件環境相同的情況下,不同排序算法的速度還與數據的長度、性質以及數據的初始順序有關。
    在筆者的“工具箱”中,有三種算法在不同的情況下都是最快、最有用的,這三種算法分別是快速排序、歸并排序和基數排序。
    快速排序
    快速排序是一種分割處理式的排序算法,它將一個復雜的排序問題分解為若干較容易處理的排序問題,然后逐一解決。在快速排序算法中,首先要從數據集的數據中選擇一個數據作為分割值,然后將數據分成以下3個子集:
    (1) 將大于分割值的數據移到分割值前面,組成子集1;
    (2) 分割值本身為子集2;    
    (3) 將小于分割值的數據移到分割值后面,組成子集3。
    等于分割值的數據可以放在任意一個子集中,這對快速排序算法沒有任何影響。
    由于子集2已經是有序的,所以此后只需對子集1和子集3進行快速排序。
    需要注意的是,當數據集很小時,無法進行快速排序,而要使用其它排序算法。顯然,當數據集中的數據只有兩個或更少時,就不可能將數據集再分割成三個子集。實際上,當數據集比
較小時,程序員就應該考慮是否仍然采用快速排序算法,因為在這種情況下另外一些排序算法往往更快。
    例3. 2a用快速排序算法重寫了例3.1中的字符串數組排序程序,你同樣可以將它和本章末尾的有關代碼一起編譯成一個可執行程序。程序中定義了一個宏,它可使程序更易讀,并能加快執行速度。
    快速排序算法是由程序中的myQsort()函數實現的,它是按升序對一個字符串數組進行排序的。函數myQsort()的具體工作過程如下:
    (1)首先檢查最簡單的情況。在第17行,檢查數組中是否沒有或只有一個元素——在這種情況下,數組已經是有序的,函數就可以返回了。在第19行,檢查數組中是否只有兩個元素——在這種情況下,要么數組已經是按升序排列的,要么交換這兩個元素的位置,使它們按升序排列。
    (2)在第28行至第53行,將數組分割為兩個子集:第一個子集中的數據大于或等于分割值,第二個子集中的數據小于分割值。
    在第28行,選擇數組中間的元素作為分割值,并將其和數組中的第一個元素交換位置。
    在第37行至第39行,在數組中找到屬于第二個子集的第一個元素;在第45行至第47行,在數組中找到屬于第一個子集的最后一個元素。
    在第49行,檢查屬于第二個子集的第一個元素是否位于屬于第一個子集的最后一個元素的后面,如果是,則第一個子集的所有元素都已在第二個子集的所有元素的前面,數據已經劃分好了;否則,交換這兩個元素的位置,然后重復上述這種檢查。
    (3)當兩個子集分割完畢后,在第55行,將分割值和第一個子集中的最后一個元素交換位置,排序結束時這個分割值將仍然排在現在這個位置。在第57行和第58行,分別調用myQsort()函數對分割所得的子集進行排序。當所有的子集都經過排序后,整個數組也就排好序了。

    例一個不使用qsort()函數的快速排序算法程序

1: #include <stdlib.h>
2:
3: #define exchange(A, B, T)  ((T) = (A), (A) = (B),(B)=(T))
4:                                        
5:
6: / * Sorts an array of strings using quick sort algorithm * /
7: static void myQsort(const char * array[], size_t num)
8: {
9:     const char * temp
10:     size_t i, j;
11:
12:       /*
13:       * Check the simple cases first:
14:       * If fewer than 2 elements, already sorted
15:       * If exactly 2 elements, just swap them (if needed).
16:          * /
17:       if (num <2)
18:                return;
19:       else if (num==2)
20:        {
21:           if (strcmp(array[O], array[1])>O)
22:                 exchange (array[0], array[1] ,temp)
23:        }
24:        / *
25:        * Partition the array using the middle (num/2)
26:        element as the dividing element.
27:          * /
28:       exchange (array[0], array[num / 2], temp)
29:       i=1;
30:       j=num;
31:       for (; ;)
32:         {
33:             / *
34:               * Sweep forward until and element is found that
35:               * belongs in the second partition.
36:               * /
37:              while (i<j && strcmp (array, array[0])
38:                                                   <=0)
39:                    i++;
40:              / *
41:                * Then sweep backward until an element
42:                * is found that belongs in the first
43:                * partition.
44:                * /
45:             while (i<j&& strcmp(array[j-1], array[O]
46:                                               >=0)
47:                  j--;
48:              / * If no out-of-place elements, you\'re done * /
49:            if (i>=j)
50:                  break
51:               / * Else, swap the two out-of-place elements * /
52:              exchange(array, array[j-l], temp)
53:        }
54:       / * Restore dividing element * /
55:       exchange(array[O], array[i-1], temp)
56:       / * Now apply quick sort to each partition * /
57:       myQsort (array, i-1 )
58:       myQsort (array + i, num-i)
59:  }
60:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久夜色精品国产网站| 欧美精品一区二区精品网| 欧美人体做爰大胆视频| 久久这里只有精品6| 亚洲蜜臀av乱码久久精品| 狠狠色狠狠色综合系列| 91福利区一区二区三区| 久久久精品国产免费观看同学| 亚洲精品一二三四区| 国产成人精品aa毛片| 欧美一卡二卡在线| 亚洲亚洲人成综合网络| 91视频你懂的| 中文字幕视频一区二区三区久| 蜜桃视频免费观看一区| 欧美二区三区91| 亚洲精品网站在线观看| 国产suv精品一区二区883| 亚洲精品在线一区二区| 日韩av在线发布| 国产欧美精品一区| 热久久久久久久| 欧美综合色免费| 国产精品成人免费在线| 久久成人av少妇免费| 欧美精品三级在线观看| 亚洲成av人片观看| 欧美日韩久久久| 亚洲一区二区三区激情| 在线视频国产一区| 尤物av一区二区| 日本精品一区二区三区四区的功能| 国产亚洲成aⅴ人片在线观看 | 国产精品久久久久久久久免费相片| 韩国一区二区在线观看| 精品久久久久香蕉网| 精品亚洲porn| 国产无人区一区二区三区| 国产剧情一区二区三区| 欧美国产精品一区二区| 国产成人av影院| 国产精品毛片久久久久久久| 99精品欧美一区二区三区综合在线| 国产日韩欧美麻豆| 99精品久久99久久久久| 亚洲乱码日产精品bd| 欧美性大战久久久| 日韩经典一区二区| 26uuu亚洲婷婷狠狠天堂| 国产精品资源站在线| 国产精品热久久久久夜色精品三区| 成人av小说网| 亚洲国产日韩一级| 日韩一区二区三| 国产成人久久精品77777最新版本| 国产色产综合产在线视频| 成人黄色777网| 一区二区理论电影在线观看| 欧美裸体一区二区三区| 国产一区二区三区免费观看| 欧美国产禁国产网站cc| 欧美在线不卡一区| 九色综合国产一区二区三区| 国产精品婷婷午夜在线观看| 欧美性猛交xxxx黑人交| 国产一区二区精品久久99| 亚洲图片欧美激情| 精品国产一区二区亚洲人成毛片| 国产一区二区三区黄视频| 亚洲黄色录像片| 精品人伦一区二区色婷婷| 成a人片亚洲日本久久| 亚洲va国产va欧美va观看| 久久久久久久久久看片| 在线视频一区二区免费| 国产乱码精品一区二区三| 亚洲在线视频网站| 亚洲国产精品传媒在线观看| 欧美性欧美巨大黑白大战| 国产精品99久久久久久似苏梦涵| 亚洲精选视频免费看| 国产午夜精品久久| 日韩视频在线你懂得| 色噜噜偷拍精品综合在线| 国产精品一二三区| 轻轻草成人在线| 亚洲另类在线视频| 国产精品久久久久国产精品日日| 日韩视频一区二区在线观看| 欧美在线观看一区二区| 成人午夜在线播放| 精品一区二区在线视频| 午夜成人免费视频| 亚洲男女毛片无遮挡| 国产亚洲一二三区| 日韩美女在线视频| 欧美日韩久久一区二区| 色吊一区二区三区| 91在线观看污| 国产91色综合久久免费分享| 久久激五月天综合精品| 婷婷激情综合网| 亚洲午夜羞羞片| 亚洲免费电影在线| 亚洲美腿欧美偷拍| 亚洲免费观看视频| 亚洲免费电影在线| 亚洲精品高清在线观看| 亚洲精品视频在线| 一区二区三区欧美久久| 成人欧美一区二区三区小说| 国产欧美一区在线| 国产精品美女一区二区在线观看| 久久久精品影视| 日本一区二区免费在线观看视频 | 色婷婷国产精品综合在线观看| 成人h动漫精品| 丁香啪啪综合成人亚洲小说 | 日韩高清一区二区| 日韩电影在线观看一区| 性做久久久久久免费观看| 亚洲综合免费观看高清在线观看| 亚洲婷婷在线视频| 亚洲综合成人在线视频| 亚洲尤物在线视频观看| 亚洲高清中文字幕| 美国欧美日韩国产在线播放| 九九九精品视频| 国产成人一级电影| 色综合网色综合| 欧美日韩黄视频| 欧美一区二区三区系列电影| 日韩精品专区在线影院观看| 久久婷婷国产综合国色天香| 国产午夜亚洲精品不卡| 亚洲日本va午夜在线电影| 亚洲一区二区三区在线播放| 免费成人性网站| 国产精品1区二区.| 色婷婷综合久久久中文一区二区| 在线精品亚洲一区二区不卡| 69久久99精品久久久久婷婷| 精品国产髙清在线看国产毛片| 国产精品三级视频| 香蕉av福利精品导航| 久久精品国产成人一区二区三区| 国产精品99久久久久久有的能看 | 久久99精品久久久久婷婷| 国产不卡一区视频| 在线精品视频免费观看| 日韩一区二区三区视频| 亚洲欧美综合色| 天堂蜜桃一区二区三区| 国产成人亚洲综合a∨婷婷| 在线一区二区三区做爰视频网站| 日韩一二在线观看| 亚洲色图另类专区| 精品一区免费av| 日本伦理一区二区| 久久只精品国产| 视频一区在线视频| eeuss影院一区二区三区| 欧美一级黄色大片| 亚洲一区自拍偷拍| 成人综合婷婷国产精品久久| 5566中文字幕一区二区电影| 国产精品毛片久久久久久久| 日本vs亚洲vs韩国一区三区 | 中文字幕在线观看一区| 日韩一区欧美二区| 一本色道久久综合狠狠躁的推荐 | 国产精品888| 欧美一区二区免费| 亚洲综合清纯丝袜自拍| 成人av网站在线观看| 欧美一级淫片007| 亚洲欧美日韩系列| 成人一级视频在线观看| 精品国产一区二区三区四区四 | 在线视频一区二区三| 国产精品拍天天在线| 日本少妇一区二区| 欧美三级午夜理伦三级中视频| 国产精品全国免费观看高清| 狠狠色狠狠色综合| 精品国产一区二区三区四区四| 亚洲国产精品久久一线不卡| 91在线高清观看| 日韩一区在线看| 99久久婷婷国产| 国产精品国产成人国产三级| 国产精品1区2区3区在线观看| 欧美成人精品高清在线播放| 三级成人在线视频| 欧美日韩在线播放一区| 亚洲在线一区二区三区| 欧美日韩国产免费一区二区| 艳妇臀荡乳欲伦亚洲一区| 91丨porny丨在线| 亚洲猫色日本管|