1樓:匿名使用者
void+函式的使用方法:
1.void *可以指向任何型別的資料
2. void真正發揮的作用在於:
(1) 對函式返回的限定;
(2) 對函式引數的限定。
例如:void *p1;
int *p2;
p1 = p2;
3.void的使用:
規則一如果函式沒有返回值,那麼應宣告為void型別。
規則二如果函式無引數,那麼應宣告其引數為void。
規則三小心使用void指標型別。
按照ansi(american national standards institute)標準,不能對void指標進行演算法操作,即下列操作都是不合法的:
void * pvoid;
pvoid++; //ansi:錯誤
pvoid += 1; //ansi:錯誤
//ansi標準之所以這樣認定,是因為它堅持:進行演算法操作的指標必須是確定知道其指向資料型別大小的。
//例如:
int *pint;
pint++; //ansi:正確
pint++的結果是使其增大sizeof(int)。( 在vc6.0上測試是sizeof(int)的倍數)
但gnu(gnu's not unix的縮寫)則不這麼認定,它指定void *的演算法操作與char *一致。
因此下列語句在gnu編譯器中皆正確:
pvoid++; //gnu:正確
pvoid += 1; //gnu:正確
pvoid++的執行結果是其增大了1。( 在vc6.0上測試是sizeof(int)的倍數)
在實際的程式設計中,為迎合ansi標準,並提高程式的可移植性,可以這樣編寫實現同樣功能的**:
void * pvoid;
(char *)pvoid++; //ansi:正確;gnu:正確
(char *)pvoid += 1; //ansi:錯誤;gnu:正確
gnu和ansi還有一些區別,總體而言,gnu較ansi更“開放”,提供了對更多語法的支援。但是我們在真實設計時,還是應該儘可能地迎合ansi標準。
規則四如果函式的引數可以是任意型別指標,那麼應宣告其引數為void *
典型的如記憶體操作函式memcpy和memset的函式原型分別為:
void * memcpy(void *dest, const void *src, size_t len);
void * memset ( void * buffer, int c, size_t num );
規則五void不能代表一個真實的變數
下面**都企圖讓void代表一個真實的變數,因此都是錯誤的**:
void a; //錯誤
function(void a); //錯誤
2樓:匿名使用者
sum(&a[2])此語句是函式呼叫,呼叫後程式跳到void sum(int a[ ]),此時陣列的首地址是a[2],即呼叫函式後首地址的元素為3,而在呼叫函式中執行的是a[0]=a[-1]+a[1],此時a[1]是原來主函式中a的[3],即為4,a[-1]是原來主函式中的a[1],即為2,故執行完呼叫函式後a[0]=2+4=6,此時返回a[0],將a[0]返回主函式即為a[2],輸出printf("%d\n",a[2]),就是這樣的。還有就是第一句應該是#include,而不是。
3樓:油菜花零
首先標頭檔案是什麼意思沒看明白
然後你前面執行完sum(&a[2])後,陣列就變成了a=;了
那麼再輸出a[2]的值就是6了。
4樓:開心小書生
因為它的引數是一個陣列,也就是說是一個指標當你把a[2]的地址傳進去時,在裡面的操作其實和在外面操作沒有區別,都是操作你傳進去的陣列(具體你去看看函式引數的傳值與傳地址的差別,就明白了)。
上面你傳的是下標為2的元素的地址,相當於從3那個位置開始操作,所以,a[-1]=2,a[1]=4; 所以就得到那個結果了。
另外,想提醒你一點,最好不要a[-1]這種整,假如你傳的不是a[2]的地址,而是a[0]的地址
就越界了,你不信你試試。
鉗形表的使用方法,鉗形表的具體使用方法
鉗形萬用表的測量電流部分是由電流互感器和萬用表的電流測量部分組成。互感器的鐵芯有乙個活動部分,並與手柄相連,使用時按動手柄使活動鐵芯張開。將被測電流的導線放入鉗口中,鬆開手柄後使鐵芯閉合。此時通過電流的導線相當於互感器的一次繞組,二次繞組將出現感應電流,其大小由導線的工作電流和繞組圈數比來確定。電流...
氣割的使用方法,氣割氣焊的正確使用方法
手柄後方左側乙個螺旋扭是液化氣或者乙炔的氣門開關開啟後點火,前方下面開關是氧氣,不燃燒點火後開大這個開關調節火苗,火草為中間一厘公尺是藍色的適宜,離藍色火尖端二到三公釐處溫度最高,這時開始燒被割物體燒開始化時開前方上面的扭把熔化的吹開就行了。氣割是指用氧 乙炔 或其它可燃氣體,如丙烷 天然氣等 火焰...
示波器的使用方法,示波器的使用方法有什麼?
可以看人教版高中物理第二冊實驗部分。請看說明書,說明書請!示波器的使用方法如下 1 反時針旋轉輝度旋鈕到底,豎直和水平位移轉到中間,衰減置於最高檔,掃瞄置於 外x檔 2 開電源,指示燈亮後等待一兩分鐘進行預熱後再進行相關的操作。調輝度,再聚焦,進而調水平和豎直位移使亮點在中心合適區。調掃瞄 掃瞄微調...