c语言字符串-字符串指针

一、字符串
在这里插入图片描述
3、字符串特点
a) 字符串占位符是%s
例如:printf("%s\n", "abcd\0"); //可以直接跟字符串	或者printf("%s\n", 字符串的首地址); //可以直接跟字符串的首地址
在这里插入图片描述
b)字符串占用内存是连续的,一个字符挨着一个字符
一旦碰到‘\0’则表示字符串的结束
在这里插入图片描述

字符串有点像数组,内存也是连续的

例如

printf(“%s\n”,”abcd\0def”);//可以直接跟字符串 
							打印出abcd(因为碰到\0表示结束了)

或者
printf(“%s\n”,字符串首地址)//可以直接跟字符串的首地址

c) 多个并列的字符串最终gcc会把它合并成一个字符串

“abc””def”--->”sbcdef”
printf(“abc””def”);--->abcdef

在这里插入图片描述

**

二 、字符串和指针的那点事

**

在这里插入图片描述
定义并且初始化字符指针变量的形式:
p保存着字符串"abcd"的首地址,等于其中字符’a’的首地址

 char *p = "abcd"; 

c) 如果让一个字符指针变量指向一个字符串,其中字符串的’\0’可以不用写
gcc编译器自动帮你添加‘\0’

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

**

三、字符串和数组两种写法

**

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可复制代码如下:

//字符串演示
 #include<stdio.h>
 int main(void)
 {
     //1、直接打印输出字符串
     printf("%s\n","abcd\0");//abcd
     printf("%s\n","abcd\0efg");//abcd
     printf("hello,word\n");//hello,word
     printf("hello,""word\n");//gcc合并为“hello,word\n”
 
 
 
     //2、字符指针变量和字符串的关系
     char *p="abcd";//gcc帮你添加‘\0’,p保存着字符串的首>    地址
     printf("sizeof(p)=%d\n",sizeof(p))//永远等于4(指针)
     printf("%s\n",p);//直接给字符串的首地址即可
     //*(p+2)='C';//报错
     //打印出字符串的每个字符
		printf("%c\n",*p++);//a
     printf("%c\n",*p++);//b
     printf("%c\n",*p++);//c
     printf("%c\n",*p++);//d
     printf("%c\n",*p++);//'\0'的ascii码
 
     //3、字符串和数组的关系
     char a[]={'a','b','c','d','\0'};
     printf("%s\n",a);//a就是字符串的首地址
     a[2]='C';//将第二个元素字符‘c’修改位‘C’
     printf("%s\n",a);//a就是字符串的首地址
     printf("sizeof(a)=%d\n",sizeof(a));//5
 
     char b[]="hjkl";
     printf("%s\n",b);//b就是字符串的首地址
     b[2]='K';//将第二个元素字符‘k’修改为K
     printf("%s\n",b);//b就是字符串的首地址
     printf("sizeof(b)=%d\n",sizeof(b));//5
     return 0;
 }

**

四、字符串标准库函数

**

a)这些函数功能:便于处理字符串
b)strlen函数:获取字符串中有效字符的长度,不包含结束符’\0’;


运行结果均为3
c) strcat函数:字符串拼接
在这里插入图片描述
在这里插入图片描述

d)strcmp函数:字符串比较函数
在这里插入图片描述
在这里插入图片描述
e)strcopy函数:字符串copy函数
在这里插入图片描述
在这里插入图片描述
如果p5长度超过10或报错,则需要加一个判断函数
在这里插入图片描述
f)sprintf函数:格式化输出函数
在这里插入图片描述
在这里插入图片描述
g)strtoul函数:字符串转整形函数

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永栀哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值