字符串指针

字符串指针

字符串就是一个字符数组,只不过该数组以’\0’结尾,字符串的性质和数组差不多,名字也是字符串的首地址。一些定义也是大同小异,下面介绍一些不一样的性质。

字符串定义与使用

    //字符串特有定义方式
    //"TOM" => 'T','O','M','\0'
    char str[30] = "TOM";

使用双引号赋值字符串是一种常用的方式,会在结尾自动加上’\0’,这个是字符串结束的标志,在打印字符串时,会自动在遇到’\0’的地方停止打印。可以看到打印的内容大小与字节大小不一致,这是字符串打印特性,遇到’\0’结束打印。如果没有‘\0’,结尾,打印将会乱码。

	char s[4] = {'L','U','B','I'};
    char str[] = "TOM\0JOHN";
    char ch[] = "\0KOKO";
    //打印字符串和字符串大小
    printf("str = %s sizeof(str) = %d\n",str,sizeof(str));
    printf("ch = %s sizeof(ch) = %d\n",ch,sizeof(ch));
    printf("s = %s sizeof(s) = %d\n",s,sizeof(s));

结果

str = TOM sizeof(str) = 9
ch =  sizeof(ch) = 6
s = LUBI5 sizeof(s) = 4

字符串是一个数组,就不能以变量名来赋值,要以数组下标来赋值。这样会有点麻烦。系统库有专门的字符串赋值函数提供使用。
头文件:string.h
char *strcpy( char *to, const char *from );
功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。
但要注意字符串to的大小要装得下from字符串,不然会运行出错。

    char str[10] = "JOJO";
    char ch[10];
    strcpy(ch,str);

一些关于字符串的其他函数
字符串拼接
char *strcat( char *str1, const char *str2 );
功能:函数将字符串str2 连接到str1的末端,并返回指针str1.
str1与str2的数据没有被改变,使用字符指针接收该返回值
查找字符
char *strchr( const char *str, int ch );
功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。
字符串比较
int strcmp( const char *str1, const char *str2 );
功能:比较字符串str1 and str2, 返回值如下:
返回值
less than 0
str1 is less than str2
equal to 0
str1 is equal to str2
greater than 0
str1 is greater than str2
字符串长度
size_t strlen( char *str );
功能:函数返回字符串str 的长度( 即空值结束符之前字符数目)
字符串追加
char *strncat( char *to, const char *from, size_t count );
功能:将字符串from 中至多count个字符连接到字符串to中,追加空值结束符。返回处理完成的字符串。

字符串常量

字符串常量与变量不同,字符串常量在文字常量区,权限为只读。字符串变量在栈区,可读可写。操作文字常量区内容会运行出错。

    char *str = "TOM";
    //运行出错
    *str = "KOKO";

字符串常量
微信号

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值