指针是C语言重要概念.pptVIP

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指针是C语言重要概念

第十章 指针;以前在程序中定义整形等变量。如 int a,b; 表示a和b申请整形单元,分别存放两个整形值。 我们也可以定义一种特殊的变量,它用来存放内存单元地址。这种变量的值是一个地址,它的作用是:根据地址去找相应的单元,因此,这种装载地址的变量又可称为“指针变量”。 指针变量的值就是指针即地址。;10.2 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。存放地址的变量称谓指针变量。 为了表示指针变量和它所指向的变量之间联系,程序中用*符号表示“指向” 如用i_point表示指针变量,而*i_point就表示i_point指向的变量。 10.2.1 定义一个指针变量 C语言规定所有变量在使用前必须定义,指定其类型,并按此分配内存单元。;int i,j; int *point1,*point2; 定义了两个指向整形变量的指针变量。 定义指针变量要指定“基类型” 基类型是指针变量指向的变量的类型。 指针变量的定义形式: 基类型 *指针变量名 那么如何给指针变量赋值呢? point1=i; point1=j;;10.2.2 指针变量的引用 指针变量只能存放地址(指针),有两个有关的运算符: (1):取址运算符,a (2)*:指针运算符(“间接运算符”),*p main() {int a,b;int *point1,*point2; a=100;b=20; point1=a; point2=b; printf(“%d,%d\n”,a,b); printf(“%d,%d\n”, *point1,*point2);};point1=*point2; ? b=*a; ? main() { int *p1,*p2,*p,a,b; a=10;b=90; p1= a;p2=b; if(ab){p=p1;p1=p2;p2=p;} printf(“%d,%d\n”,*p1,*p2); };10.2.3 指针变量作为函数参数 函数参数可以是指针变量 swap(int *p1,int *p2) { int temp; temp=*p1;*p1=*p2;*p2=temp;} main() {int a,b, *point1,*point2; a=10;b=90; point1=a; point2=b; if(ab)swap(point1,point2); printf(“%d,%d\n”, *point1,*point2);};10.3 数组的指针和指向数组的指针变量;10.3.1 指向数组元素的指针 int a[10]; int *p; p=a[8]; C语言规定数组名代表数组的首地址,也就是第0号元素的地址. 下面两个句子等价: p=a[0]; p=a; ;10.3.2 通过指针引用数组元素 按C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(而不是将的p的值简单加1). 如果p的初值为a[0],则 (1)p+i和a+i就是a[i]的地址 (2)*(p+i)和*(a+i)是p+i和a+i所指向的数组元素,即a[i]。 可以看出,[ ]实际上是变址运算符 (3)指向数组的指针变量也可以带下标,如 p[i]与*(p+i)等价.;10.3.3 用数组名作函数参数 例: main() inv(int arr[ ],int n) { int array[10]; { : : inv(array,10); } : } 用数组名作参数时,如果形参数组中各元素值发生变化,实参数组值随之变化.;void inv(int arr[ ],int n) { int t,i,j,m=(n-1)/2; for(i=0;i=m;i++) { j=n-1-i;t=arr[i];arr[i]=arr[j];arr[j]=t;} } main() { int i,a[10]={2,4,54,6,7,3,31,56,23,65}; inv(a,10); for(i=0;i=9;i++) printf(“%d”,a[i]); };f(int arr[ ],int n)等价于f(int *arr,int n) 例: 函数定义为:

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档