第3章指标与字串pointersandstrings内容摘要:

標與二維陣列 方法 2  第二個方法是使用 tables[][]陣列名稱的指標變數,其運算式如下所示: *(*(tables + i) + j)  tables是二維陣列的名稱,可以將它視為是一個指向指標的指標變數,在中間括號部分的運算式,如下所示: *(tables+i)  上述指標運算可以當作是第一欄tables[ROWS][0]的指標運算,取值運算取得的是: • tables[0][0]( tables+0) • tables[1][0]( tables+1) • tables[2][0]( tables+2) • tables[3][0]( tables+3) 323 指標陣列 宣告  「指標陣列」( Arrays of Pointer)是指陣列的每一個元素都是一個指標變數,也就是說,陣列元素的值都是指向其它變數的位址。  指標陣列的宣告方式類似指標變數,如下所示: define ROWS 4 int *tables[ROWS]。  上述程式碼宣告指標陣列 tables[],一共擁有 4個元素,每一個元素是一個整數的指標變數,可以指向整數或一個一維陣列,如果都是指向 5個元素的一維陣列,相當於是宣告一個 4 X 5的二維陣列。 323 指標陣列 差異  指標陣列和二維陣列的差異在指標陣列並不能指定初值,二維陣列在宣告後就配置ROWS X COLS個元素,指標陣列只配置ROWS個元素,指標陣列的最大好處是每一個指標指向的變數可以是不同長度,例如:不同元素分別指向整數或整數陣列。 323 指標陣列 圖例 323 指標陣列 存取  使用指標運算存取指標陣列的元素,如下所示: for ( i=0。 i ROWS。 i++ ) { printf(*tables[%d]=%2d , i, *tables[i])。 printf(**(tables+%d)=%2d , i, **(tables + i))。 printf(**(ptr+%d)=%2d , i, **(ptr + i))。 }  上述 for迴圈可以走訪指標陣列,然後使用*tables[i]、 **(tables + i)和 **(ptr + i)取得陣列元素的值。 33 指標與結構 宣告  指標也可以指向結構。 例如:宣告 lable結構儲存員工的姓名和年齡,如下所示: struct label { char name[20]。 int age。 }。  上述結構擁有 2個成員變數,因為指標需要指向結構變數的位址,所以需要先宣告結構變數,然後才能建立指向結構的指標,如下所示: struct label worker。 struct label *ptr。 33 指標與結構 存取  接著將結構指標指向結構,如下所示: ptr = amp。 worker。  結構指標 ptr指向結構變數 worker的位址,換個方式,可以使用指標變數存取結構的成員變數,如下所示:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。