chapter7c语言.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 规定: 字符串常量按字符数组处理,即在内存中开辟一个字符数组存放 串常量(包括‘\0’,且数组大小刚好存放数组全部元素)。 上面的定义并初始化,就是定义一个指针变量(开辟2 bytes空间),并把 串常量“Hello!”的第一个字符的地址赋给str指针。 注意:str——‘H’即字符串指针指向字符型数据,指向串的第一个字符, 对字符串指针的引用*str实质上是引用其所指向的字符,如开始时, *str==‘H’。而不是整个字符串“Hello!” 2。应用说明: ①指针类型:字符型指针 printf(“%c”,*str); printf(“%c”,*(str+1)); ②所指向字符串的输出: puts(str); printf(“%s”,str); printf(“%c”,str);// ?输出怪字符 puts(*str);// ? ③字符串指针与字符数组区别: 1)字符串指针是变量(2字节),用来存放一个地址值.char *str;str =“ABC”; 字符数组是用来具体存放字符串元素的,开辟size *sizeof(type)字节 存储单元,Char str[20]={“ABC”}; or char str[20]={‘A’,’B’,’C’,’\0’}; 2)赋值方式: static char str[]={“Hello!”};//初始化形式定义 char *str =“Hello!”;//初始化形式定义 char str[200] ; str=“Hello!”;// ? gets(str);// ? char *str; str =“Hello!”;// ? 3)数组定义,数组名是常量,具体的固定地址值,char str[200];gets(str);? 字符串指针定义,该指针变量有2字节内存空间,但值为残值,gets(s); ? 由于数组名是固定地址,故不能作左值。 static char str[]=“ABCDEF”; for(i=0;i6;i++) printf(“%s”,str++);// ? 字符指针即使定义初始化,使用时也要注意: char *s=“HUST”; gets(s);//!危险,若输入新串超过5个字符则会覆盖串文字量“HUST”后面存储空间的内容。 ④字符串指针值可变,且可以用下标引用 char *str =“Hello!”;str ++; for(i=0;str[i]!=‘\0’;i++) printf(“%c”,str[i]); ⑤给字符串指针变量指向的内存空间赋值前,先给字符串指针变量赋值。 char *s; s =“abc”; or s=(char *)malloc(20); gets(s);//要保证s所指向的空间足够大。 二、字符串指针用作函数参数 【例】求字符串长度 int strlen(char *str) { int i=0; while(*str++)i++; return i; } int strlen(char *str) { char *p; p=str; while(*p)p++; return (p-str); } ① 函数体中的应用形式 可以采用下标形式或指针形式,str[i] or *str ② 函数调用: 指针变量没有赋有意义的初值时,不能对*p 赋值,尤其在主调函数中。 char *a, *b =“abcd”; strcpy(a,b);//!危险 函数调用时,实参可以用指向字符串的指针,也可以用储存字符串的数组名。 注意:用字符型指针处理字符串只是一种手段,必须要与数组(具体存放字 符串的存储空间)结合,或者与动态内存分配库函数的使用相结合。 【例】 #include string.h void main() { char *str1,*str2,ch; str1 =“abc”;str2 =“asdfgh8”; ch=‘8’; strcpy(str1,str2); printf(“%s\t%s\t%c\n”,str1,str 2,ch); } 输出:asdfgh8 gh8 8CR 由此看见,对字符串指针指向的存储空间赋值时,必须保证有足够空间。 7.6指针与指针数组 一、指针数组 1。定义格式: 类型 *数组名[常量表达式]; 例:int *p[4],a0[10],a1[10],a2[10],a3[10]; p[0] =a0;p[1] =a1;...... 2.使用说明 ?元素为相应的指针类型 【例】 void print(char *[],int); void main() { stat

文档评论(0)

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

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

1亿VIP精品文档

相关文档