字符串的存放方式(c语言)

方式1:字符串指针(字符指针)

字符串指针展示

#include<stdio.h>
int main(){
     char * str= "中国";
     printf("%s\n",str)
     return 0;
}

  •  定义一个字符串指针初始化或者先定义再赋值
  • 打印时直接 打印地址 (而不是打印解引用
  • ps:用的中文字符举例(一般来说一个中文=两个字节)
  • 还有一种样式 但是打印方式不同

字符指针展示

#include<stdio.h>

int main(){
    char* p ="你好中国";
    printf("%c%c%c%c%c%c%c%c",
    *(p+4),*(p+5),*(p+6),*(p+7),*(p+0),*(p+1),*(p+2),*(p+3)   );
    return 0;
}

  • 上述打印时,使用的是解引用的方式

同类型字符串为数字内容的展示

#include<stdio.h>

int main(){
    char* p ="12345678";
    printf("%c%c%c%c%c%c%c%c",
    *(p+0),*(p+1),*(p+2),*(p+3),*(p+4),*(p+5),*(p+6),*(p+7) );

    printf("%c%c%c%c%c%c%c%c",
    *(p+4),*(p+5),*(p+6),*(p+7),*(p+0),*(p+1),*(p+2),*(p+3) );
    return 0;
}

 (加了一份数字的 哪个好理解看哪个)

字符串指针和字符指针实际上是同一方式的不同叫法

总结一下:第一张图%s(%s是遇到\0就停止的)是直接打印字符串地址的方式 ,存放字符串,打印字符串地址(从头开始打印,直到结束字符串)

                                                     %s 对应  地址(指针)

                   第二张图%c一个字符一个字符打印 ,使用解引用的方式,每个数字占一个字节,每次解引用打印一个数字,而且要求%c和字符串中元素是一一对应的

                                                      %c 对应 解引用地址

方式2:字符数组

#include<stdio.h>

int main(){
     char str1[10]= {"01234567"};  //字符数组创建的第一种格式
     char str2= {"01234567"};  //字符数组创建的第二种格式
     char str3[10]= {'0','1','2','3','4','5','6','7'};  
     //字符数组创建的第三种格式
     printf("%s\n",str1)
     printf("%s\n",str2)
     printf("%s\n",str3)
     return 0;
}

#include<stdio.h>

int main(){
     char str1[10]= {"01234567"};  //字符数组创建的第一种格式
     char str2= {"01234567"};  //字符数组创建的第二种格式
     char str3[10]= {'0','1','2','3','4','5','6','7'};  
     //字符数组创建的第三种格式
     printf("%c%c%c%c%c%c%c%c",
     str1[0],str1[1],str1[2],str1[3],str1[4],str1[5],str1[6],str1[7]);
     printf("%c%c%c%c%c%c%c%c",
     str2[0],str2[1],str2[2],str2[3],str2[4],str2[5],str2[6],str2[7]);
     printf("%c%c%c%c%c%c%c%c",
     str3[0],str3[1],str3[2],str3[3],str3[4],str3[5],str3[6],str3[7]);
     return 0;
}

两个案例

第一个是打印数组首地址

                                              %s  对应的是首地址(数组名)

第二个是通过数组下标打印单个字符(类似于解引用)                 

                                              %c 对应数组下标(数组下标其实就是访问地址的一种方式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值