网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言程序设计基础第8讲指针.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计基础 第8章 指针 刘新国 1 第8章 指针 变量、内存单元、地址 指针类型 定义、初始化、赋值、使用 指针应用 数据传递 字符串处理 内存分配 数据遍历 8.1.2 指针类型 指针是一种新的数据类型 存放变量的地址 存放数据单元的地址 假设定义了变量 int x, *p; 那么可将变量x的地址存在指针p中: p = x; 是取地址运算符 canf(%d, x) 变量和数据单元地址 1000 p p = x 表达式*p和变量x指代同一个东西 8.1.3 指针变量的定义 类型名 * 指针变量名 int *p; p 是整型指针,可用来指向整型变量 只能指向同类型的变量 float *fp; fp 是浮点型指针,可用来指向浮点型变量 double *q; q 是字符型指针,可用来指向double变量 char *cp; cp 是字符型指针,可用来指向字符型变量 8.1.4 指针的基本运算 给指针赋值 int a, x, *p; p = a; 访问指针所指向的变量 *p = 3; *p = 5; x = *p; [例8-2]指针运算和访问 int a = 3, *p; p = a; printf(a=%d, *p=%d\n, a, *p); *p = 10; printf(a=%d, *p=%d\n, a, *p); printf(“Enter a: ”); /*若输入5*/ scanf(%d, a); printf(a=%d, *p=%d\n, a, *p); (*p)++; printf(a=%d, *p=%d\n, a, *p); 7 8.1.5 指针的变量的初始化 int a, x; int * p = a; int * q = NULL; NULL是一个常量,值为0,表示空指针 #define NULL 0 int * q = 0; float * fp = (float*)1732; 8.2 变量交换swap函数实现 void swap1(int x, int y) { int temp = x; x = y; y = temp; } void main() { int a=1, b=2; swap1(a,b); } 能否成功交换变量a和b的值? 9 8.2 变量交换swap函数实现 void swap2(int *x, int *y) { int * p = x; x = y; y = p; } void main() { int a=1, b=2; swap2(a, b); } 能否成功交换变量a和b的值? 10 8.2 变量交换swap函数实现 void swap3(int *x, int *y) { int temp = *x; *x = *y; *y = temp; } void main() { int a=1, b=2; swap3(a, b); } 能否成功交换变量a和b的值? 11 8.2.2 指针作为函数的参数 void swap2(int *x, int *y) { int temp = *x; *x = *y; *y = temp; } void main() { int a=1, b=2; swap2(a, b); } 12 传递结果 改变主调函数的变量值 例[8-4]编写函数,计算某年某天对应的月份和日期 函数的输入参数:年份,天数 int year, int yearday 例如2008年的第128天,year=2008, yearday=128 函数的输出结果:月份,日期 结果不止一个,无法用返回值 可以用指针变量 int *pmonth, int *pday 函数原型: void month_day(int year, int yearday, int *pmonth, int *pday); 13 例[8-4]计算某年某天对应的月份和日期 void month_day ( int year, int yearday, int *pmonth, int *pday) { int k, leap; int tab [2][13] = { {0,31,28,… 31 }, {0,31,29,… 31 }}; /* 闰年判别leap */ leap = (year%4==0 year%100!=0) ||

文档评论(0)

133****0075 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档