程式执行概观.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程式执行概观

程式執行概觀 變數重要性質 位址 (程式執行時, 變數配置在記憶體中的位置) 值 (程式執行時, 變數存放的值) 註:變數的位置可由取址運算子 “” 取得 範例(variable_addr.c) 執行結果 #include stdio.h int main() { int a=1; int b=2; printf(value of a is : %d\n, a); printf(address of a is : %x\n, a); printf(value of b is : %d\n,b); printf(address of b is : %x\n,b); } value of a is : 1 address of a is : bfbff9dc value of b is : 2 address of b is : bfbff9d8 變數 位址 值 a bfbff9dc 1 b bfbff9d8 2 何謂指標 指標可視為與一般變數一樣,只不過它的值是一記憶體位址。其宣告方式如下: 資料型態 *變數名; (或 資料型態* 變數名) 範例 說明 int *ip; int* ip; ip 為一變數,如果 ip 的值為 bfbff9dc,則也可以說成 ip 是一個指向記憶體位址 bfbff9dc 的指標。其指向的記憶體位址存放的資料是 int 字元指標宣告為: char *abc 浮點數指標宣告為: float * 其他型態指標宣告方式亦類似。 int *ip[5]; int a[5]; 取址運算子 (address operator) “” 是取址運算子,可以用來取得一個變數在記憶體中的位址。 範例 說明 int x; int *ip; scanf(“%d”,x); ip = x; x 即變數 x 的記憶體位址。 ip = x; 即指標變數 ip 指向變數 x ,或 ip 的值為 x 的記憶體位址。 間接 定/取 值運算子 * (dereferencing operator) 可以利用指標變數來間接定值或間接取值。 範例(indirect.c) 說明 int *ip; int x = 2, y = 3; int *iq; iq = y; ip = x; y = *ip + 1; printf(“%x %d\n”, x, x); printf(“%x %x %d\n”, ip, ip, *ip); printf(“%x %d\n”, y, y); 輸出結果為: bfbff9dc 2 bfbff9d8 bfbff9dc 2 bfbff9d4 3 ip = x; 即 ip 指向 x,或 ip 的值等於 x 的記憶體位址,因此 *ip 等於 x y = *ip+1; 其中 *ip 為間接取值,不是取 ip 的值,而是取 ip 指向記憶體位址上的值,亦即 x 的值。因此,該敘述與 y = x+1 有相同結果。 變數 位址 值 x bfbff9dc 2 ip bfbff9d8 bfbff9dc iq Bfbff9e0 Bfbff9d4 y bfbff9d4 3 *ip = 2, *iq=3 直接 與 間接 定/取 值 範例 說明 int x, y, *ip, *iq; x = 2; //敘述1 y = x + 3; //敘述2 ip = x; //敘述3 iq = ip; //敘述4 *iq = *ip + y; //敘述5 敘述1中, x 直接定值為2 敘述2中, x + 3 直接取 x 的值, 再直接定 y 值為 5 敘述3中,由 x 直接取 x 的位址, 再直接定ip的值為x 的位址 敘述4中,直接取ip的值, 再直接定 iq 的值為 ip。此時, 指標 ip 與 iq 同樣指向 x,即 *ip, *iq與x皆相等 敘述5中, *ip 間接取得 x 的值, 再直接取得 y 的值, 再由 *iq 間接定 x 的值為 7 變數 位址 值 x bfbff9dc 7 y bfbff9d8 5 ip bfbff9d4 Bfbff9dc iq bfbff9d0 Bfbff9dc 範例(addr_pointer.c) 執行結果 #include stdio.h int main() { int a; int *p; a = 1; p = a; printf(value of a = %d \n,a); printf(address of a = %x \n\n,a); printf(value of p = %x \n, p); printf(addres

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档