- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 2001-2016年电子科技大学《601数学分析》历年考研真题汇总(含部分答案).pdf VIP
- 古典文献学第二章 文献的形成和流布.ppt VIP
- 2025年综合窗口岗位工作人员招聘考试笔试试题(附答案).docx VIP
- 纪念中国红军长征胜利89周年PPT课件.pptx VIP
- 2025年中国衬橡胶设备数据监测报告.docx
- (NEW)电子科技大学数学科学学院857概率论与数理统计历年考研真题汇编(含部分答案).pdf
- 中央民族大学非事业编制合同制职工招聘笔试试题及答案2021.docx VIP
- 哲理小故事 哲理小故事.doc VIP
- 2025中央民族大学非事业编制合同制职工招聘10人(第四批)笔试备考试题及答案解析.docx VIP
- (校级台账目录)“全国义务教育优质均衡发展县”督导评估台账目录(中小学通用稿-2024.03.30-修订).docx
文档评论(0)