C语言—指针经典教学.docx

C语言—指针经典教学.docx

ID:59255999

大小:16.98 KB

页数:17页

时间:2020-09-08

C语言—指针经典教学.docx_第1页
C语言—指针经典教学.docx_第2页
C语言—指针经典教学.docx_第3页
C语言—指针经典教学.docx_第4页
C语言—指针经典教学.docx_第5页
资源描述:

《C语言—指针经典教学.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、指针inta,*p;1.a为变量,可以理解为对应内存的名称,通过这个名称访问对应内存2.p为地址,存放内存的地址,这个地址对应的内存只能存放整型值3.&a取变量的地址,如p=&a4.*P取地址p对应内存的整型值,如a=*p5.在没有给指针p赋值前,即p的地址不明确时,不要使用*p。指针与数组:1.数组inta[10],a就是数组的首地址2.数组可以用指针表示inta[10],*p;p=a;则数组的第i个元素,可以用*(p+i)的形式访问,等价于a[i]指针+整数的含义3.用a和p访问数组的区别允许p++,不允许a+

2、+,即p的值可改变,而数组a的值不能改变,当数组a为函数参数时,允许改变其值。数组必须事先确定大小,但指针可动态分配空间,动态分配内存见课件例:输入n,输入n个数,逆序后输出(事先不知道数的个数)#include#include//包含了malloc和free函数的说明voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);//分配n个整型单元,把首地址赋给pfor(inti=0;i

3、("%d",p+i);for(i=0;i#includevoidinversion(int*a,intn){for(inti=0;i

4、换*(p+i)和*(p+n-i-1);{intc;c=*(a+i);*(a+i)=*(a+n-i-1);*(a+n-i-1)=c;}}intsumofarray(int*p,intn)//int*p可以改成intp[]{ints=0;for(inti=0;i

5、urns;}voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);for(inti=0;i

6、=”helloworld”;不合法,原因是s的值不能改变char*s;s=”helloworld”;允许,把存放”helloworld”的首地址赋给s举例:1)写一个函数,获取字符串的长度#includeintgetlen(char*s){for(intc=0;*s!=0;s++,c++);returnc;}voidmain(){char*a="abc";printf("%d",getlen(a));}2)实现strcpy函数功能copy_string#include#inclu

7、de#includevoidcopy_string(char*from,char*to){for(;*from!='';from++,to++)*to=*from;*to='';}voidmain(){char*a;char*b;a=(char*)malloc(20);b=(char*)malloc(20);strcpy(a,"Iamateacher.");strcpy(b,"Youareastudent.");copy_string(a,b);printf("str

8、ing_a=%s",a);printf("string_b=%s",b);free(a);free(b);}3)写一个函数计算一个字符串中出现不同英文字母的个数intGetLetterNum(char*s)//返回s中的出现的不同英文字母的个数{扫描s判断当前字符是否是英文字母判断是否已出现过加入已出现的字符的字符串中}intIsLetter(charc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。