freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[it認證]c語言第11講指針-資料下載頁

2025-01-19 08:44本頁面
  

【正文】 a[i]+j表示地址: a[i]是第 i行 首元素的地址 。 a[0]+1表示第 0行第 1列元素的地址; amp。a[0][1] a[0]+2表示第 0行第 2列元素的地址; amp。a[0][2] a[2]+3表示第 2行第 3列元素的地址; amp。a[2][3] 第 i行第 j列元素的地址 (amp。a[i][j]); *(a+i)表示地址: *(a+i)等價于 a[i] 第 i行首元素的地址 *(a+i)+j表示地址: *(a+i)+j等價于 a[i]+j 第 i行第 j列元素的地址 數組元素 a[i][j]的表示: a[i]+j *( ) *(a+i) +j *( ) *(a+i) ( ) [j] 若 i=0, a[0][j]可表示為: *(a[0]+j)、 *(*a+j)、 (*a)[j] 若 j=0, a[i][0]可表示為: *(a[i])、 *(*(a+i))、 (*(a+i))[0] (a+i)與 *(a+i)的比較: (a+i)等價于 amp。a[i] *(a+i)等價于 a[i] ①、都表示地址: a+i表示第 i行的地址 (行 指針 ), *(a+i)表示第 i行 首元素 的地址 ②、它們指向的數據類型不同: a+i指向一個一維數組 (二維數組的一行、行指針 ); *(a+i)指向數組元素; 若進行操作: (a+i)+1: 使指針移動一維數組所占字節(jié)總數 (一行、 8字節(jié) ) *(a+i)+1: 使指針移動一個數組元素所占內存字節(jié)總數 (2字節(jié) ) 對 a[i]性質的進一步說明: a[i]從形式上看是 a數組中第 i個元素。 如果 a是一維數組名,則 a[i]代表 a數組第 i個元素所占的內存單元。 a[i]是有物理地址的,占內存單元。 如果 a是二維數組,則 a[i]代表一維數組名。 a[i]本身并不占實際的內存單元,它也不存放 a數組中各個元素的值;它只是一個地址。 a、 a+i、 a[i]、 *(a+i)、 *(a+i)+j、 a[i]+j都是地址,*(a[i]+j)、 *(*(a+i)+j)是二維數組元素 a[i][j]的值。 關于 amp。a[i]的說明: ①、不要把 amp。a[i]簡單的理解為 a[i]單元的物理地址,因為并不存在 a[i]這個變量。它只是一種地址的計算方法,能得到第 i行的首地址; ②、 amp。a[i]和 a[i]的值是一樣的,但它們的含義不同: amp。a[i]或 a+i指向行,而 a[i]或 *(a+i)指向列。 當列下標 j為 0時, amp。a[i]和 a[i](即 a[i]+j)值相等,即指向同一位置。 ③、 *(a+i)只是 a[i]的另一種表示形式,不要簡單的認為是“ a+i所指單元的內容”。 對于二維數組: a+i=a[i]=*(a+i)=amp。a[i]=amp。a[i][0], 它們的地址相等。 例:輸出二維數組有關的值。 二、 指向多維數組的指針變量 指向數組元素的指針變量 與指向一維數組元素的指針變量一樣,它用來專門存放某個數組元素的內存地址。或者說,用于指向某個數組元素,定義方法與指向某種類型變量的指針變量一樣。 指向一維數組的指針變量 定義: 類型名 (*指針變量名 )[n] 如: int (*p)[4] int a[3][4]。 ①、 *p有 4個元素,每個元素為整型;即 p所指的對象是有4個整型元素的數組。 p為 行指針 (a+i)。 ②、 p只能指向一個包含 4個元素的一維數組, p的值就是該一維數組的首地址。 p不能指向一維數組中的元素 ; ③、 p+i表示二維數組中第 i行的地址; *(p+i)+j表示第 i行第 j列元素的地址; *(*(p+i)+j)即數組元素 a[i][j]。 例:輸出二維數組中任一行任一列元素的值。 scanf(%d%d, amp。i, amp。j)。 printf(a[%d][%d]=%d\n, i, j, *(*(p+i)+j) )。 通過指針在函數間傳遞多維數組 用數組名作實參,則是將二維數組首行的指針常量 (二維數組名 )傳遞給了作為函數形參的指針變量,該指針變量就指向了二維數組的第 0行。 例:求 3行 4列二維數組中的最大元素。 方法一、 int max_value(int (*pa)[4], int n) { int m=pa[0][0]。 for (i=0。 in。 i++) for (j=0。 j4。 j++) if (mpa[i][j]) m=pa[i][j]。 return(m)。 } (*(pa+i)+j) (*(pa+i))[j] int max_value(int pb[ ][4], int n) int max_value(int [ ][4], int ) int max_value(int (*)[4], int ) 方法二 、 int max_value(int *p, int n) { int m=*p。 for (i=0。 in。 i++, p++) if (*pm) m=*p。 return(m)。 } 比較: int (*pa)[4] int *pb[4] int (*pa)[4] pa為數組指針,行指針 ,是指針變量, 表示二維數組每一 行 的 地址 。數組元素的值為數據。 如: int (*pa)[4],a[3][4]。 pa=a。 則: pa[0][0]=a[0][0] pa+1表示為 a[1]的這行地址即 (a+1) int *pb[4] pb為指針數組,是數組名, 表示一維數組的首地址 。數組元素的值為 元素指針 。 P153 如: int *pb[4], a[3][4]。 pb=a。 則: pb[0]=amp。a[0][0] 為第 0行第 0個元素的地址 pb[1]=amp。a[1][0] 為第 1行第 0個元素的地址 指針數組一般用于表示多個字符串的每個字符串的首地址。 如: char *sa[2]={ “how are you?”, “I an a student” } 167。 本章小結 一、有關指針的數據類型: int *p p為指向整型數據的指針變量 char *p p為指向字符型數據的指針變量 int (*pa)[n] pa為 指向一維數組的指針變量 (指向具有 n個元素的一維數組 ) 指針變量在定義時必須寫成如上形式,但在作函數形參時可寫成幾種等價形式: int *p。 可寫成: int p[]。 char *cp。 可寫成: char cp[]。 int (*pa)[5]。 可寫成: int pa[][5]。 二、指針運算小結: 指針變量加 (減 )一個整數 例如: p++、 p、 p+i、 pi、 p+=i、 p=i等 C語言規(guī)定:一個指針變量加 (減 )一個整數并不是簡單地將指針變量加 (減 )一個整數,而是將它所指向的變量所占用的內存單元字節(jié)數相加 (減 )。 p+i p+i*d 指針變量的賦值 int i, a[10], *p, *p1, *p2。 p=amp。i。 p=a。 p2=amp。a[i]。 p1=p2。 注意: ①、 不能把整數賦值給指針變量; ②、 也不能把指針變量的值賦值給整型變量; 指針變量可以有空值 ,即該指針變量 不指向任何變量 p=NULL。 define NULL 0 注意: ①、 p的值為 NULL與未對 p賦值不同; ②、任何指針變量或地址均可以與 NULL作相等或不等的比較。 if (p==NULL) …… if (p!=NULL) …… 兩個指針變量可以相減 如果兩個指針變量 指向同一個數組的元素 ,則兩個指針變量之差是 兩個指針之間元素的個數 。 p1=a+5。 p2=amp。a[1]。 p1p2=4 注意: 兩個指針變量相加無實際意義。 兩個指針變量的比較 兩個指針指向同一個數組的元素,則可以進行比較,指向前面元素的指針變量“小于”指向后面元素的指針變量。 void invert(int x[ ], int n) { int *p1, *p2, t。 p1=x。 p2=x+n1。 for ( 。 p1p2。 p1++, p2) { t=*p1。 *p1=*p2。 *p2=t。 } } p1!=p2 注意: 如果 p1和 p2不指向同一數組則比較無意義 。 本章作業(yè)一 定義長度為 10的整型一維數組,編寫函數將數組中的元素按逆序存放,在主函數中輸出結果。 ①、實參和形參都用指針變量 ②、實參用指針變量,形參用數組名 編寫函數,將字符串 s1中的第 m個字符開始的全部字符復制成另一個字符串 s2。 要求在主函數中輸入字符串 s1及m的值并輸出復制結果,在被調函數中完成復制。
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1