字符数组与字符指针变量的区别

字符数组与字符指针变量的区别

ID:38749863

大小:47.00 KB

页数:4页

时间:2019-06-18

字符数组与字符指针变量的区别_第1页
字符数组与字符指针变量的区别_第2页
字符数组与字符指针变量的区别_第3页
字符数组与字符指针变量的区别_第4页
资源描述:

《字符数组与字符指针变量的区别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、请问一下大家,字符数组与字符指针变量用法有什么区别?另外char*s与chars[]有什么区别?最佳答案字符数组名与字符串指针变量名的区别2009-01-1919:08授课内容:一、字符串指针变量的说明和使用字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。对指向字符变量的指针变量应赋予该字符变量的地址。如:charc,*p=&c;表示p是一个指向字符变量c的指针变量。而:char*s="CLanguage";则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。请看下面一例。main(){

2、char*ps;ps="CLanguage";printf("%s",ps);}运行结果为:CLanguage上例中,首先定义ps是一个字符指针变量,然后把字符串的首地址赋予ps(应写出整个字符串,以便编译系统把该串装入连续的一块内存单元),并把首地址送入ps。程序中的:char*ps;ps="CLanguage";等效于:char*ps="CLanguage";输出字符串中n个字符后的所有字符。二、字符指针变量的运算main(){char*ps="thisisabook";intn=10;ps=ps+n;printf("%s",ps);

3、}运行结果为:book在程序中对ps初始化时,即把字符串首地址赋予ps,当ps=ps+10之后,ps指向字符“b”,因此输出为"book"。main(){charst[20],*ps;inti;printf("inputastring:");ps=st;scanf("%s",ps);for(i=0;ps[i]!='';i++)if(ps[i]=='k'){printf("thereisa'k'inthestring");break;}if(ps[i]=='')printf("Thereisno'k'inthestring"

4、);}本例是在输入的字符串中查找有无‘k’字符。三、字符串指针作为函数参数的使用。要求把一个字符串的内容复制到另一个字符串中,并且不能使用strcpy函数。函数cprstr的形参为两个字符指针变量。pss指向源字符串,pds指向目标字符串。表达式:(*pds=*pss)!=`'cpystr(char*pss,char*pds){while((*pds=*pss)!=''){pds++;pss++;}}main(){char*pa="CHINA",b[10],*pb;pb=b;cpystr(pa,pb);printf("stringa=

5、%sstringb=%s",pa,pb);}在上例中,程序完成了两项工作:一是把pss指向的源字符复制到pds所指向的目标字符中,二是判断所复制的字符是否为`',若是则表明源字符串结束,不再循环。否则,pds和pss都加1,指向下一字符。四、使用字符串指针变量与字符数组的区别用字符数组和字符指针变量都可实现字符串的存储和运算。但两者是有区别的。在使用时应注意以下几个问题:1.字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘’作为串的结束。字符数组是由于若干个数

6、组元素组成的,它可用来存放整个字符串。2.对字符数组作初始化赋值,必须采用外部类型或静态类型,如:staticcharst[]={“CLanguage”};而对字符串指针变量则无此限制,如:char*ps="CLanguage";3.对字符串指针方式char*ps="CLanguage";可以写为:char*ps;ps="CLanguage";而对数组方式:staticcharst[]={"CLanguage"};不能写为:charst[20];st={"CLanguage"};而只能对字符数组的各元素逐个赋值。从以上几点可以看出字符串指针变

7、量与字符数组在使用时的区别,同时也可看出使用指针变量更加方便。前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。因此,char*ps="CLangage";或者char*ps;ps="CLanguage";都是合法的。你这个问题问得很好,我们知道实际上一个字符串在进行赋值的时候,例如:char*p="helloworld";这样赋值是允许的。那么这并不代表"helloworld"这个就是一个指针,实际上我们的这一动作,编译器在幕后为我们做了很多事,

8、首先在常量区分配一个字符数组,然后将"helloworld"这个字符串中的字符(包括最后的''字符。)拷贝到此数组(其实此数组我们可以看成是一个匿名数组,因为没

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

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

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