第一週週報

你沒有臉紅發表於2020-11-21

第一週週報

關於陣列

二維陣列

指標

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
大端模式,是指資料的高位元組儲存在記憶體的低地址中,而資料的低位元組儲存在記憶體的高地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加,而資料從高位往低位放;這和我們的閱讀習慣一致。

小端模式,是指資料的高位元組儲存在記憶體的高地址中,而資料的低位元組儲存在記憶體的低地址中,這種儲存模式將地址的高低和資料位權有效地結合起來,高地址部分權值高,低地址部分權值低。

在這裡插入圖片描述

指標與陣列

通過指標變數對陣列輸入輸出:

{
int *p,i,a[10];
p=&a[0];
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;

for(i=0;i<10;i++,p++)
printf("\n %d \n",*p);
}

說明

(1)
p=&a[0];
等價於
p=a;
(2)
第一個迴圈是讀入十個數,第二個迴圈是輸出,p++的作用是每次自加後指向下一個元素

陣列逆置

#include<stdio.h>
 int main()
 {
 	int a[11]={1,2,3,4,5,6,7,8,9,10,11};
 	int i=0,j=10,t;
 	int mid=(i+j)/2;
	for(i=0;i<mid;i++)
	{
		t=a[i];
		a[i]=a[j];
		a[j]=t;
		j--;
	 } 
	for(i=0;i<11;i++)
	{
		printf("%4d",a[i]);
	}
    return 0;
  } 

利用指標的逆置

#include<stdio.h>
 void swap(int *p1,int*p2)
 {
 	int temp;
 	temp=*p2;
 	*p2=*p1;
 	*p1=temp;
  } 
  void nizhi(int *arr,int n)
  {
  	int*M=arr+n/2;
  	int*i=arr;
  	int *j=arr+n-1;
  	while(i<M)
  	{
  		swap(i,j);
  		i++,j--;
	}
  }
  int main()
  {
 	int arr[11]={1,2,3,4,5,6,7,8,9,10,11};
	 nizhi(arr,11);
	 for(int i=0;i<11;i++)
	 {
	 	printf("%4d",arr[i]); 
	 } 
	  return 0;
  }

指向二維陣列的指標

若陣列為
1 2 3
4 5 6
7 8 9
初始定義陣列:

float a[3][3] = {{1,2,3}{456}{789}}

設二維陣列a的首地址為2000在這裡插入圖片描述
沒學會 over