C语言中没有string类型

C语言中没有string类型

搞懂个事的根本核心是:C语言的数组类型里,唯一和字符串沾边的就只有char型数组了。

所以,理所当然的,我们就会想到用二维字符型数组来建立——把字符串当做数组里的一个元素。
char型的经典用法:

char a = 'E';
char b = 70;

有这种正常的字符型数组:

char w[]={'s','d',' ','-'};
char w1[]="sda sdasedad 23123-=";
char *w1 = "This is a string.";

那么是否有?char w2[][]={"sedqsd","wedqwed","fsdf"};
答案是有的!

 #include<stdio.h>
 #include<stdlib.h> 
  int main(int argc, char *argv[])
   {  
    char c[][5] = {"abc","haha","no"}; 
     for (int i=0; i<3; i++) 
      {    printf("%s\n",c[i]);  } 
      return 0; 
    }

编译截图:
在这里插入图片描述
不过这里的char c[][]里第二个中括号里的数值(即6)它决定了每个字符串的长度,最长的haha其实是5个长度(haha加上‘’\0‘’),所以第二个括号里的数值要>=5.第一个中括号则决定了数组里有几个字符串,不写值都可以,但不能小于3.所以,printf里的用了c[]而没有用c[][],因为只需第一个中括号即可说明要打印第几个字符串。
在这里插入图片描述

一直以来对这个问题都不是很清楚:只是知道C语言里有<string.h>这个头文件,所以就想当然的认为C语言里有string这个类型。C语言里有int a语句,但没有 string b语句。查了资料才知道原来C语言里压根就没有string这个类型,所有的字符串都是通过char数组来存储的。而<string.h>这个头文件里声明的函数原型也全是针对char数组的种种操作。直到C++中才出现了string这个类。





我不清楚此问题的原因:我本人由于学了C语言、学了C++语言和java语言,java语言也是有string类型的,我由于编程语言学的太多而没有学精某一门编程语言,所以就给学串了。尤其是当C语言好久没用,而java又正好在学,就会把C语言和java语言的语法记混。

C语言中下面这种的不能运行:

 #include<stdio.h>
 #include<stdlib.h> 
 #include <string.h>  
 int main(int argc, char *argv[])
  {  
   string s[] = {"abc","haha","no"}; 
    for (int i=0; i<3; i++)
      {    printf("%s\n",s[i].c_str());  }  
   return 0;
    } 

它会在string s[]时就报错。

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值