- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]C语言第6章-3 指针
说明: 定义str为指针变量,它指向字符型数据,且赋值语句把字符串“I am a student”的首地址赋给了指针变量str。 对字符串的整体输出实际上是从指针所指示的字符开始逐个显示(系统在输出一个字符后自动执行str++),直到遇到字符串结束标志符‘\0’为止。而在输入时,同样是将字符串的各字符自动顺序存储在str指示的存储区中,并在最后自动加上 ‘\0’。 a:代表二维数组首地址,即第0行首地址或第0行中第0列元素的地址(既a[0][0])。 a+i: 代表第i行首地址,即为a[i][0]。 a[i]: 代表第i 行的首地址,即第i行中第0列元素的地址(既a[i][0])。 a[i]+j: 代表第i行中的第j个元素的地址,即为a[i][j]。 注意地址变化的单位数值在不同的场合的实际字节数是不同的: “a+1”中的“1”代表数组中一行元素所占的总字节数; “a[i]+1”中的“1” 代表数组中一个元素所占的字节数。 例:使用一维数组指针变量,输出二维数组的全部元素。 到此! 到此! * 二、字符指针 1、用字符指针处理字符数组。 例6.33 编写程序,对具有10个元素的字符数组,从下标为4的元素开始,全部设置为“*”,保持前4个元素不变。 例6.34 字符串的倒序排列。 例:用函数调用实现字符串的复制。 (1) 用字符数组作参数 在上例main函数中也可以用字符型指针变量作实参。先使指针变量a和b分别指向两个字符串。 main函数可改写如下: (2) 实参、形参都用字符指针变量。 (3) 对 copy_string 函数还可作如下几种简化: ①、将copy_string函数改写为 void copy_string(char *from,char *to) { while((*to=*from)!=‘\0’) { from ++; to ++; } } ②、 copy_string函数的函数体还可改为 { while((*to++=*from++)!=‘\0’); } ③、copy_string函数的函数体还可写成 { while(*from!=‘\0’) *to++=*from++; *to=‘\0’; } ④、上面的while语句还可以进一步简化为下面的while语句: while(*to++=*from++); 它与下面语句等价: while((*to++=*from++)!=‘\0’); 将*from赋给*to,如果赋值后的*to值等于’\0’,则循环终止(’\0’已赋给*to) ⑤、函数体中while语句也可以改用for语句: for(;(*to++=*from++)!=0;); 或 for(;*to++=*from++;); ⑥、也可用指针变量,函数copy_string可写为 void copy_string(char from[],char to[]) { char *p1,*p2; p1=from;p2=to; while((*p2++=*p1++)!=‘\0’); } 例6.35 字符串的复制。 例6.36 字符串的链接。 例6.37 字符指针处理字符串常量示例。 例:写出下列程序的运行结果。(假设从键盘输入:1234567) #include stdio.h void main ( ) { char s[7] ; int i ; scanf(“%s”,s); for ( i = 0 ; i 7 ; i ++) printf(“%s\n”, s[ i ] ) ; } 结果如下: 1234567 234567 34567 4567 567 67 7 字符数组和字符指针的联系与区别: 虽然用字符数组和字符指针都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈,主要有以下几点: (1)组成不同:字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),不是将字符串放到字符指针变量中。 (2)赋值方式不同:对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。 char str[14]; str=″I Love China!″; 而对字符指针变量,可以采用下面方法赋值: char*a;
文档评论(0)