陣列中a[i][j]代表第i+1行的第j+1個數
定義陣列時以下面的問題為例a[5][5]代表生成乙個5*5的大小的矩陣
而引用時切記第一行第乙個數為a[0][0]以此類推
隨機生成乙個[5][5]的陣列,使第一行與第五行調換位置,並找到此行的最大值或最小值
順便講乙個小知識關於電腦中的隨機數
1.計算機不會產生絕對隨機的隨機數,計算機只能產生「偽隨機數」。其實絕對隨機的隨機數只是一種。
2.計算機的偽隨機數是由隨機種子根據一定的計算方法計算出來的數值。所以,只要計算方法一定,隨機種子一定,那麼產生的隨機數就是固定的。
3.只要使用者或第三方不設定隨機種子,那麼在預設情況下隨機種子來自系統時鐘。
附帶乙個常見問題errorc1104:以管理員身份開啟visual c++
#include#include#includevoid main()
printf("\n");//輸出隨機生成的陣列
} printf("第一行與第五行調換後的陣列:\n");
for(j=0;j<5;j++)
//完成第一行和第五行的互換
for(i=0;i<5;i++)
for(i=0;i<5;i++)
}printf("第%d行最大值:%d\n",i+1,max);
}
下面再來看乙個例子
printf("請輸入1-10\n");
scanf("%d",&input);
array[10]=input;
for (i = 0; i < 10; i++)
if (input == array[i])
for(temp = i;temp<9;temp++)
array[temp+2]=temp+2;
for(i =0;i<11;i++)
printf("%5d",array[i]);
return 0;
}陣列做函式引數退化問題解析
1.陣列實際上是把陣列的首位址和陣列的長度輸入給函式
2.a直接看為整個陣列的名字
2.實參a(是多個整形變數)和形參a(是指標型別)的資料型別不同
形參中的陣列,編譯器會把它當做指標處理
對於我們寫關於陣列做函式形參的時有一定啟發
例如 拿冒泡演算法舉例
num = sizeof(a)/sizeof(a[0]);//a代表整個陣列
void hanshu(int *a,int num)//*a代表陣列首位址}}
}
也就是說我們可以對乙個陣列元素個數不確定的陣列作為形參
陣列指標(也稱行指標)
定義 int (*p)[n];
()優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型資料的長度。
如要將二維陣列賦給一指標,應這樣賦值:
int a[3][4];
int (*p)[4]; //該語句是定義乙個陣列指標,指向含4個元素的一維陣列。
p=a; //將該二維陣列的首位址賦給p,也就是a[0]或&a[0][0]
p++; //該語句執行過後,也就是p=p+1;p跨過行a[0]指向了行a[1]
所以陣列指標也稱指向一維陣列的指標,亦稱行指標。
指標陣列
定義 int *p[n];
優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。這裡執行p+1時,則p指向下乙個陣列元素,這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指標變數可以用來存放變數位址。但可以這樣 *p=a; 這裡*p表示指標陣列第乙個元素的值,a的首位址的值。
如要將二維陣列賦給一指標陣列:
int *p[3];
int a[3][4];
p++; //該語句表示p陣列指向下乙個陣列元素。注:此陣列每乙個元素都是乙個指標
for(i=0;i<3;i++)
p[i]=a[i]
這裡int *p[3] 表示乙個一維陣列內存放著三個指標變數,分別是p[0]、p[1]、p[2]
所以要分別賦值。
這樣兩者的區別就豁然開朗了,陣列指標只是乙個指標變數,似乎是c語言裡專門用來指向二維陣列的,它占有記憶體中乙個指標的儲存空間。指標陣列是多個指標變數,以陣列形式存在記憶體當中,占有多個指標的儲存空間。
還需要說明的一點就是,同時用來指向二維陣列時,其引用和用陣列名引用都是一樣的。
比如要表示陣列中i行j列乙個元素:
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]
優先順序:()>>*
來看這樣乙個demo
產生這樣結果的原因是
而&b代表的是整個陣列的位址 因此&b+1代表的是b陣列後的位址
c語言陣列
陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...
C語言陣列
在變數作函式引數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用陣列名作函式引數時,情況則不同。由於實際上形參和實參為同一陣列,因此當形引數組發生變化時,實參陣列也隨之變化。當然這種情況不能理解...
C語言 陣列
陣列 void test1 for int i 0 i 5 i for int i 0 i 5 i 陣列資料倒序存放 void test2 printf 請輸入5個學生的成績 n for int i 4 i 0 i printf 輸出5個學生的成績 n for int i 0 i 5 i 將陣列的長...