1樓:匿名使用者
可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大**明,如:
void func(int array[3][10]);
void func(int array[10]);
二者都是合法而且等價,但是不能把第二維或者更高維的大小省略,如下面的定義是不合法的:
void func(int array[
因為從實參傳遞來的是陣列的起始位址,在記憶體中按陣列排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多 少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
void func(int array[3]實引數組維數可以大於形引數組,例如實引數組定兆李遲義為:
void func(int array[3][10]);
而形引數組定義為:
int array[5][10];
這時形引數組只取實引數組的一部分,其餘部分不起作用。
對於陣列 int p[m][n];
p + i*n + j;
void func(int array[3][10]);
void func(int array[10]);
變為: void func(int **array, int m, int n);
在轉變後的函式中,array[i][j]這樣的式子是不對的(不信,大家可以試一下),因為編譯器不能正確的為它定址,所以我們需要模仿編譯器的行為把array[i][j]這樣的式子手工轉變為:
(int*)array + n*i + j);
在呼叫這樣的函式的時候,需要注意一下,如下面的例子:
int a[3][3] =
func(a, 3, 3);
根據不同編譯器不同族李的設定,可能出現warning 或者擾裂error,可以進行強制轉換如下呼叫:
func((int**)a, 3, 3);
其實多維陣列和二維陣列原理是一樣的,大家可以自己擴充的多維陣列,這裡不再贅述。寫到這裡,我先向看了這篇文章後悔的人道歉,浪費你的時間了。下面是一 個完整的例子程式,這個例子程式的主要功能是求乙個圖中某個頂點到其他頂點的最短路經,圖是以鄰接矩陣的形式存放的(也就是乙個二維陣列),其實這個函式 也是挺有用的,但是我們這篇文章的重點在於將二維陣列作為函式的引數傳遞。
2樓:匿名使用者
漏洞掃瞄有以下四種檢測技術:1.基於應用的檢測技術。
它採用被動的、非破壞性的法檢查應用軟體包的設定,發現安全漏洞。2.基於主機的檢測技術。
它採用被動的、非破壞性的法對運並液系統進行檢測。通常,它涉及到系統的內旁物核、檔案的屬性、操作系蔽亮。
以下的php函式,哪些可能導致檔案包含漏洞
3樓:進擊的薄小貓
你就不能說明白點是那個?整些沒用的。
4樓:狼狗姑姑
以下的哪些?請完整說明。
php中有哪些容易導致漏洞的危險函式
5樓:莫路草根
最危險的當屬:eval了,eval — evaluate a string as php code,把字串當做php**來執行,很多一句話木馬就是用的這個函式來構造的,你可以去搜」php一句話木馬「看看。
include/require 這兩個函式也被黑客經拿來引用木馬。
引用作為函式的引數有什麼優缺點
使用引用傳參的話,在函式中對該變數所做的修改,在函式返回後依然存在。這未必是程式設計師所希望的。特點 傳入實參本身,不建立副本 好處 傳實參本身的好處 如void swap int a,int b 確實可以交換兩個變數 如果是void swap int a,int b 傳進去的是引數的拷貝,實參並沒...
關於c的題目編寫程式用引用作為函式引數來實
你好!這裡是預定義,函式的宣告 int main void 括號裡面的 void 表示沒有型別 這是函式的實現,int x,int y,帶有地址的引用 1 void 表示沒有引數,可以省略 2 傳引用,表示x,y會被改變。如果不用引用,x,y在函式結束後,還是原來的值,並沒有改變。第一個是函式宣告 ...
資料庫函式的共同特點有哪些?
每個函式均有個引數。函式在資料庫中起到什麼作用?它的優點是什麼 函式的作用 函式是用來實現某些功能運算和完成各種特定操作的重要手段。優點 允許標準元件式程式設計,提高了sql語句的重用性 共享性和可移植性。可以減少重複編寫程式段的工作量,提高程式可讀性。提高程式編譯和執行效率,產生質量較高的目標 滿足算...