- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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
您可能关注的文档
- BIOS设置基础详解.doc
- BIOS设置方法图觖及如何设置启动项.doc
- BIOS设置翻译图文教程.doc
- BIOS详细分解图组.doc
- BlackBerryDM黑莓手机桌面管理器使用教程方法.doc
- BlackBerry入门教程黑莓手机软件安装方法.doc
- BIOS里一些常用的功能设置.docx
- BLINK迷你无线路由器BLMP的设置方法与步骤.docx
- blos设置怎样设置第一启动盘.doc
- BLWCWM无线路由器设置方法.doc
- 2025至2030车身传感器行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030肠胃外药物行业项目调研及市场前景预测评估报告.docx
- 2025至2030灯具行业市场深度调研及供需格局及有效策略与实施路径评估报告.docx
- 2025至2030底部安装压力表行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030第三代测序行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030电饼铛行业项目调研及市场前景预测评估报告.docx
- 2025至2030赌桌行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030靶向药物输送系统行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030阿米卡星(CAS37517285)行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030财务管理软件行业产业运行态势及投资规划深度研究报告.docx
最近下载
- 泸州老窖“浓香文酿杯”企业文化知识竞赛考试题库大全-中(判断题汇总).docx VIP
- 2025北京经济技术开发区招考社区工作者80人笔试参考题库附答案解析.docx VIP
- 规范管理食堂真心服务学生 学校食堂管理工作典型经验案例.docx VIP
- 安徽省第四届全省家政服务职业技能大赛婴幼儿发展引导员考试题库(含答案) .docx VIP
- 概率论基础教程答案英文ch09.pdf VIP
- 风电场前期开发流程.ppt VIP
- 2016年恩施州中考数学真题(含答案).docx VIP
- 2025北京经济技术开发区招考社区工作者80人考试备考试题及答案解析.docx VIP
- 营销总监劳动合同.docx VIP
- 三菱变频器FR-E820 FR-E840 FR-E860接线说明书.pdf VIP
文档评论(0)