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

c开放实验指导书.doc

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

C语言开放实验指导书 第1章 指针 1.1 学习要点 1.指针变量是用来存放其它变量的地址的变量。通过指针可以访问其他变量的值。 指针变量定义的一般形式为:类型标识符 *指针变量名; 指针变量使用之前必须先赋值,指针变量的赋值只能赋予地址。未经赋值的指针变量不能使用,否则将造成系统混乱。 2. 指针变量作为函数的参数,可以实现函数之间多个数据的传递。当形参为指针变量时,其对应实参可以是指针变量或存储单元地址。 3.C语言中允许一个函数的返回值是一个指针(即地址),这样的函数称为返回指针值的函数。其定义形式为: 类型说明符 *函数名(形参表) { 函数体语句; } 4. 在C语言中,一个函数在内存中占用一段连续的存储空间,这段存储空间的首地址称为函数的入口地址,通过函数名就可以得到这一地址。可以把函数的入口地址赋给一个指针变量,使该指针变量指向该函数,然后通过指针变量就可以找到并调用这个函数。 定义指向函数的指针变量的一般形式为:类型标识符 (*指针变量名) ( ); 5. 定义一个指向一维数组的指针变量例如:int a[5]={1,3,5,7,9},*p; p=a; //或p=a[0]; C语言规定,数组名代表数组的首地址,也就是第0个元素的地址,所以上面两个赋值语句是等价的。 如果p的初值为a则: (1) p+i和a+i就是a[i]的地址,它们指向a数组的第i个元素。 (2) *(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a[i]。 (3) 指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。(4) 指针变量可以实现本身的值的改变,如:p++;若p原来指向a[0],执行p++后,p指向a[1]。但是a++是非法的,因为a是数组名,它是数组的首地址,是一个地址常量。 1. 二维数组的地址表示:设有定义int a[3][4]; 可以把二维数组a理解成一个一维数组, 它有3个元素: a[0], a[1], a[2],而每一个元素又是一个一维数组, 包含4个元素,如a[0]是一维数组, 它有4个元素: a[0][0], a[0][1], a[0][2], a[0][3]。 a是二维数组名,整个二维数组的首地址,也是二维数组第0行的首地址,a等价于a[0],类似的,a+1等价于a[1]代表第1行的首地址,a+2等价于a[2]代表第2行的首地址。 既然a[0], a[1], a[2]是一维数组名, 它们就代表了一维数组的首地址,因此a[0]代表了第0行第0列元素的地址,即a[0]等价于a[0][0], 类似的,a[1]等价于a[1][0],a[2]等价于a[2][0]。 假设用符号“?”表示“等价于”,因 *a ? *(a[0])? a[0] ? a[0][0],所以*a ? a[0] ? a[0][0],可以推导出: *a+1 ? a[0]+1 ? a[0][1] *(a+1) ? a[1] ? a[1][0] *(a+2)+3 ? a[2]+3 ? a[2][3] 由上可以总结出:*(a+i)+j? a[i]+j ? a[i][j],代表数组元素a[i][j]的地址,而*(*(a+i)+j)? *(a[i]+j) ? a[i][j],代表数组元素a[i][j]。 ’作为串的结束。通常情况下,用字符数组来存放字符串,而用字符串指针变量来指向该字符数组。 (2) 字符数组不允许进行赋值操作,而字符串指针变量可以直接赋值。 例如:char *p1,*p2=”China”; //对p2进行初始化 p1=”Welcome”; //对p进行赋值“字符型指针数组”,利用字符指针数组可以指向多个长度不等的字符串,使字符串处理起来更方便、灵活,节省内存空间。 10. 二级指针是指在一个指针变量中存放的是另一个指针变量的地址。二级指针的定义形式为: 类型说明符 **指针变量名; 例如:int x, *q,**p; x=36; //x是一个整型变量 q=x; //q是一个指针变量,它指向整型变量x p=q; //p是一个二级指针变量,它指向指针变量q 注意:p=x;是错误的。 11. 动态内存分配是在程序运行时为程序分配内存的一种方法。有关动态内存分配有如下3个函数: (1) malloc函数 函数原型:void *malloc( unsigned int size); 函数功能:在内存开辟一个长度为 size 个字节的连续的存储空间, 返回一个指向该存储区首地址的指针,若系统不能提供足够的内存单元(分配失败), 函数将返回空指针NULL。 例如:int *p=NULL; p= (int *) mall

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档