ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

理解指针(三)-字符串与字符数组

2021-04-03 10:30:44  阅读:181  来源: 互联网

标签:字符 ps pc 字符串 hellow 指针


一、字符串与字符指针变量
1.直接记录代码
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */

int main(int argc, char *argv[]) {

char *p = "hellow,world!"; //初始化字符指针变量,并指向字符串的首字母
							//指针指向的是字符‘h’,指针加一就增加一字节大小, 就指向了e 
//char *str = "hellow!";
while(*p != '\0'){
	
	putchar(*p);
	p++;
	
} 
printf("\n");
printf("*************************\n");
printf("\"hellow\" + 0 = %c\n",*("hellow" + 0));
printf("\"hellow\" + 1 = %c\n",*("hellow" + 1));
printf("\"hellow\" + 2 = %c\n",*("hellow" + 2));

return 0;

}

2.注意点
字符串与字符数组名均表示指针常量(重点注意是常量),其本身的值不能修改,而定义的指针变量是一变量,可以直线不同的字符串。
如 c++; //错误。字符数组名c为常量
“hellow”++; //错误。字符串表示指针常量,其值不能修改
*(“hellow”+1)=‘d’; //运行时错误。试图把e,变为d
pc=“abcd”; //正确,让 pc 指向串 “abcd”
pc=“hello”; //正确,修改pc指向,让其指向串"hello"
*(pc+4) = ‘p’; //运行时错误。试图把’o’字符改变为’p’
strcpy(pc,“xyz”);//运行时错误。企图把另一个串复制到pc空间

二、字符数组与字符指针变量
1、字符数组可以理解成由若干个字符变量的集合,每个字符是变量,可以做修改。因此它与字符串有些区别
char str[]='I Like C Language!";
char *ps=str;//初始指向字符串首字符"I"
*(ps+3)=‘o’;//‘i’->‘o’
*(ps+4)=‘v’;//‘k’->‘v’
ps=str+2;//ps指向’L’字符
puts (ps);//输出 Love C Language!并换行

2.注意点
一般把字符串存放于字符数组中时,一定要存储字符串结束符 ‘\0’,因为 C 库函数中,对字符串处理的函数,几乎都是把 ‘\0’ 作为字符串结束标志的。如果字符数组中没有存储结束符,却使用了字符串处理函数,因为这些函数会寻找结束符 ‘\0’,、

字符数组定义时,一定要初始化,可以赋值0,如果没有初始化,到时直接操作赋值,容易崩溃

标签:字符,ps,pc,字符串,hellow,指针
来源: https://blog.csdn.net/weixin_42147275/article/details/115412742

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有