欢迎来到天天文库
浏览记录
ID:59255999
大小:16.98 KB
页数:17页
时间:2020-09-08
《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;i3、("%d",p+i);for(i=0;i#includevoidinversion(int*a,intn){for(inti=0;i4、换*(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;i5、urns;}voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);for(inti=0;i6、=”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#inclu7、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("str8、ing_a=%s",a);printf("string_b=%s",b);free(a);free(b);}3)写一个函数计算一个字符串中出现不同英文字母的个数intGetLetterNum(char*s)//返回s中的出现的不同英文字母的个数{扫描s判断当前字符是否是英文字母判断是否已出现过加入已出现的字符的字符串中}intIsLetter(charc
3、("%d",p+i);for(i=0;i#includevoidinversion(int*a,intn){for(inti=0;i4、换*(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;i5、urns;}voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);for(inti=0;i6、=”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#inclu7、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("str8、ing_a=%s",a);printf("string_b=%s",b);free(a);free(b);}3)写一个函数计算一个字符串中出现不同英文字母的个数intGetLetterNum(char*s)//返回s中的出现的不同英文字母的个数{扫描s判断当前字符是否是英文字母判断是否已出现过加入已出现的字符的字符串中}intIsLetter(charc
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;i5、urns;}voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);for(inti=0;i6、=”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#inclu7、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("str8、ing_a=%s",a);printf("string_b=%s",b);free(a);free(b);}3)写一个函数计算一个字符串中出现不同英文字母的个数intGetLetterNum(char*s)//返回s中的出现的不同英文字母的个数{扫描s判断当前字符是否是英文字母判断是否已出现过加入已出现的字符的字符串中}intIsLetter(charc
5、urns;}voidmain(){int*p,n;scanf("%d",&n);p=(int*)malloc(sizeof(int)*n);for(inti=0;i6、=”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#inclu7、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("str8、ing_a=%s",a);printf("string_b=%s",b);free(a);free(b);}3)写一个函数计算一个字符串中出现不同英文字母的个数intGetLetterNum(char*s)//返回s中的出现的不同英文字母的个数{扫描s判断当前字符是否是英文字母判断是否已出现过加入已出现的字符的字符串中}intIsLetter(charc
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
此文档下载收益归作者所有