C语言高级编程(第二部分)数组与指针-北京大学计算机科学技术研究所.ppt

C语言高级编程(第二部分)数组与指针-北京大学计算机科学技术研究所.ppt

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

void inv(int *x,int n) { int*p,m,temp,*i,*j;   m=(n-1)/2; i=x;j=x+n-1;p=x+m;   for(;i=p;i++,j++) {temp=*i;*i=*j;*j=temp;}   return; } 例. 用选择法对10个整数按由大到小顺序排序。 #includestdio.h void main() { void sort(int x[ ],int n); int*p,i,a[10]; p=a; for(i=0;i10;i++)   scanf(″%d″,p++); p=a; sort(p,10); for(p=a,i=0;i10;i++) {printf(″%d ″,*p);p++;} } void sort(int x[ ],int n) { int i,j,k,t; for(i=0;in-1;i++)   { k=i;    for(j=i-1;jn;j++)    if(x[j]x[k])  k=j;   if(k!=i)    { t=x[i]; x[i]=x[k]; x[k]=t;}   } } 多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000 ,则 表 示 形 式 含义 地 址 a 二维数组名,指向一维数组a[0],即0行首地址 2000 a[0], *(a+0), *a 0行0列元素地址 2000 a+1,a[1] 1行首地址 2016 a[1],*(a+1) 1行0列元素a[1][0]的地址 2016 a[1]+2, *(a+1) +2, a[1][2] 1行2列元素a[1][2] 的地址 2024 *(a[1]+2), *(*(a+1)+2), a[1][2] 1行2列元素a[1][2]的值 元素值为13 输出二维数组有关的值 #includestdio.h #define format ″%d,%d\n″ void main() { int a[3][4]={1,3,5,7,9,11,13, 15,17,19,21,23}; printf(format,a,*a); printf(format,a[0] , *(a+0));  printf(format,a[0],a[0][0]);  printf(format,a[1],a+1);  printf(format,a[1][0],*(a+1)+0);  printf(format,a[2],*(a+2));  printf(format,a[2],a+2);  printf(format,a[1][0],*(*(a+1)+0)); } 某一次运行结果如下: 1244900,1244900 (0行首地址和0行0列元素地址) 1244900,1244900 (0行0列元素地址) 1244900,1244900 (0行0首地址和0行0列元素地址) 1244916,1244916 (1行0列元素地址和1行首地址) 1244916,1244916 (1行0列元素地址) 1244932,1244932 (2行0列元素地址) 1244932,1244932 (2行首地址) 9,9 (1行0列元素的值) 期中考试 地点:理教201 时间:10:10—12:00 * 指针变量 是什么? 回顾一下CPU和内存之间的数据交换 地址总线——32位 数据总线 控制总线 内存的地址值其实就是一个32位的整数! 如果是64位的程序,指针变量的大小是多少? 如何声明 一个指针变量 int *ptr; 指针变量的名称 指针变量的类型 ptr 是一个指向整型变量的指针 定义各种类型的指针变量 定义一个指针变量: 类型 * 指针变量名 = 指针初值; 其中的“类型” 是指针指向的变量的类型 字符类型的指针变量 char

文档评论(0)

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

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

1亿VIP精品文档

相关文档