-
字符数组
2019-05-25 11:12:50字符串的存储方式有字符数组和字符指针,我们首先来看看字符数组,因为字符串就是由多个字符组成的,所以要想存储一个字符串,可以把他拆分成一个个字符,然后分别对这些字符进行存储,即通过字符数组存储,字符数组...字符串的存储方式有字符数组和字符指针,我们首先来看看字符数组,因为字符串就是由多个字符组成的,所以要想存储一个字符串,可以把他拆分成一个个字符,然后分别对这些字符进行存储,即通过字符数组存储,字符数组是一个数组,并且可以存储字符的数组,该数组中的每一个元素存放一个字符。
字符数组的定义
因为字符数组首先是一个数组,所以前面讲过的数组的内容统统使用,其次他是存放字符的数组,即数组的类型是 char 类型的,比如:
char name[10];
表示定义了10个字节的连续内存空间。
1 如果字符串的长度大于 10,那么就存在语法错误,这里需要注意的是,这里指的是“字符串长度”包括最后的"\0",也就是说,虽然系统会自动分配结束符"\0",但是他不会自动为"\0"开辟内存空间,所以定义数组长度一定要考虑"\0",
2 如果字符串的长度小于数组的长度,则只将字符串中的字符付给数组中前面的元素,剩下的内存空间系统会自动用 "\0"填充。字符数组的初始化
字符数组的初始化与前面所讲数组的初始化一样,要么定义时初始化,要么定义后初始化,下面写一个程序员来说明这个问题:
#include<stdio.h> int main(void) { char a[10]; a[0]='i'; a[1]=' '; a[2]='1'; a[3]='o'; a[4]='v'; a[5]='e'; a[6]=' '; a[7]='y'; a[8]='o'; a[9]='u'; a[10]='\0'; char b[10]; b[0]='i'; b[1]=' '; b[2]='m'; b[3]='i'; b[4]='s'; b[5]='s'; b[6]=' '; b[7]='y'; b[8]='o'; b[9]='u'; b[10]='\0'; char c[] = "i believe you"; char d[] = {'i', ' ', '1', 'i', 'k', 'e', ' ', 'y', 'o', 'u', '\0'}; char e[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'}; char f[] = "上课睡觉觉,下课大闹闹,考试死翘翘"; char g[10] = ""; printf("a = %s\n", a); printf("b = %s\n", b); printf("c = %s\n", c); printf("d = %d\n", d); printf("e = %d\n", e); printf("f = %s\n", f); printf("g = %s\n", g); return 0; }
-
C语言中字符数组只能存放字符串?字符数组和字符串的唯一区别?
2020-04-21 16:09:42C语言中字符数组只能存放字符串? 不是的,C语言中字符数组既可以保存字符,又可以保存字符串。 字符数组本意就是是指用来存放字符数据的数组。字符数组的元素是字符类型的。字符数组用于存放字符或字符串。 C语言中...C语言中字符数组只能存放字符串?
不是的,C语言中字符数组既可以保存字符,又可以保存字符串。
字符数组本意就是是指用来存放字符数据的数组。字符数组的元素是字符类型的。字符数组用于存放字符或字符串。
C语言中字符数组的一般形式为: char 数组名[数据长度] 。例如:char a[10]; a[0]=‘0’; a[1]=’ 1’; a[2]=‘2’; a[3]=‘3’; a[4]=‘4’; a[5]=‘5’; a[6]=’ 6’; a[7]=‘7’; a[8]=‘8’; a[9]=‘9’; 就定义了a为字符数组,包含10个"0"到“9”的字符元素。
因此,C语言中字符数组不单单只能保存字符串。
字符数组百和字符串的唯一区别?
字符串必须有\0结束
但字符数组可以没有
没有的情况只有一个,就是字符吧数组所有的空间占用了。
可能你不明白,举例说一下,
申请了一个数组,a[3],有三个元素的度位置
那么当三个字符都填充到这三个单元的时候,就是如xyz三个字符a[0]=‘x’,a[1]=‘y’,a[2]=‘z’
那么a这个数组将没有\0的空间,
这样是可以的,
但是要是用字符串处理函数,如道puts,strcpy等函数的时候,这样的数组是不能当字符串来处理的,因为没有\0这个结束符,所有可能有很多乱码出现,这是正常的。
因为这些函回数需要\0来判断字符串的结束位置,但是这样的数组没有\0,所以这些函数处理这样的数组时,判断结束不准确答,会出现乱码 -
字符数组和字符串的区别,C语言字符数组和字符串区别详解
2018-12-28 16:15:59C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串。那么,字符数组就一定是字符串吗? 对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和字符串是完全不相同的两个概念,千万不要...C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串。那么,字符数组就一定是字符串吗?
对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和字符串是完全不相同的两个概念,千万不要混淆。分析如下所示的示例代码。#include <stdio.h> #include <string.h> int main(void) { /*字符数组赋初值*/ char cArr[] = {'I','L','O','V','E','C'}; /*字符串赋初值*/ char sArr[] = "ILOVEC"; /*用sizeof()求长度*/ printf("cArr的长度=%d\n", sizeof(cArr)); printf("sArr的长度=%d\n", sizeof(sArr)); /*用strlen()求长度*/ printf("cArr的长度=%d\n", strlen(cArr)); printf("sArr的长度=%d\n", strlen(sArr)); /*用printf的%s打印内容*/ printf("cArr的内容=%s\n", cArr); printf("sArr的内容=%s\n", sArr); return 0; } 运行结果为: cArr的长度=6 sArr的长度=7 cArr的长度=7 sArr的长度=6 cArr的内容=ILOVEC* sArr的内容=ILOVEC 从代码及其运行结果中可以看出如下几点。 首先,从概念上讲,cArr 是一个字符数组,而 sArr 是一个字符串。因此,对于 sArr,编译时会自动在末尾增加一个 null 字符(也就是'\0',用十六进制表示为 0x00);而对于 cArr,则不会自动增加任何东西。 记住,这里的 sArr 必须是“char sArr[7]="ILOVEC"”,而不能够是“char sArr[6]="ILOVEC"”。 其次,“sizeof()”运算符求的是字符数组的长度,而不是字符串长度。因此,对于“sizeof(cArr)”,其运行结果为 6;而对于 sizeof(sArr),其运行结果为 7(之所以为 7,是因为 sArr 是一个字符串,编译时会自动在末尾增加一个 null 字符)。因此,对于以下代码: /*字符数组赋初值*/ char cArr[] = {'I','L','O','V','E','C'}; /*字符串赋初值*/ char sArr[] = "ILOVEC";
也可以写成如下等价形式:
/*字符数组赋初值*/ char cArr[6] = {'I','L','O','V','E','C'}; /*字符串赋初值*/ char sArr[7] = "ILOVEC";
最后,对于字符串 sArr,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。
通过对以上代码的分析,现在我们可以很简单地得出字符数组和字符串二者之间的区别:- 对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。
- 对于字符串,它必须以 null 结尾,其后的字符不属于该字符串。字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。
-
把字符串转化为字符数组并把字符数组排序输出
2018-05-22 19:58:25把字符串转化为字符数组并把字符数组排序输出需求:循环输入一个字符串String,把字符串转化为字符数组char [ ] ,并把该字符数组按照自然顺序排序后输出。package cn.itcast_07; import java.util.Arrays; import ...把字符串转化为字符数组并把字符数组排序输出
需求:循环输入一个字符串String,把字符串转化为字符数组char [ ] ,并把该字符数组按照自然顺序排序后输出。
package cn.itcast_07; import java.util.Arrays; import java.util.Scanner; public class stringTostringarray { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(true) { String str = input.nextLine(); if(str.equals("end")) break; else { //把字符串转化为字符数组 char[] shuzu = str.toCharArray(); //调用数组排序方法,对字符数组按照自然顺序进行排序 Arrays.sort(shuzu); System.out.println(str); for (int i = 0; i < shuzu.length; i++) System.out.print(shuzu[i]); System.out.println(); } } } }
-
Java 字符串转化为字符数组,字符数组转化为字符串
2019-08-12 22:04:07字符串转化为字符数组: char[] ss=s.toCharArray();//s为要转化的字符串 字符数组转化为字符串: String s=""; for(int i=0;i<ss.length;i++){ s+=ss[i]; } 或 char ch={'1','2','3'}; String str=new ... -
字符数组与字符串数组
2017-05-21 17:22:20C语言中:字符数组与字符串数组的定义字符数组是一个存放字符的数组字符串数组是一个特殊的字符数组,它以’\0’(ASCII 为0)结尾我们不能通过字符数组名知道数组内有多少成员,但可以通过字符串数组名计算数组内的... -
C++ 字符串与字符数组 详解
2018-03-03 19:28:22字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以... -
C语言总结(一维数组、二维数组、字符数组和字符串)
2019-01-23 20:03:27C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ... -
字符数组的输入格式(注意事项)与字符数组的输出
2020-05-05 18:39:06也可以存储在字符数组中,占一个字符元素的位置 */ #include<stdio.h> int main() { char ch[6]; for(int i=0;i<6;i++)//循环存入数组 scanf("%c",&ch[i]);//字符数组也要加取地址符,字符串数组可不加... -
将字符数组s2中全部字符复制到字符数组s1,不用strcpy(复制时‘\0’也要复制过去‘\0’后面的字符不用复制)-...
2018-07-30 21:39:35最近看到了这样编程要求:将字符数组s2中全部字符复制到字符数组s1,不用strcpy(复制时‘\0’也要复制过去‘\0’后面的字符不用复制) 于是自己编写了三种实现方法,这里没有使用指针相关的。 第一种方法在for循环... -
二维字符数组与字符串数组
2019-07-22 10:46:00首先,对于一维字符数组:char a[N]={}; 其实最后代表的也是一个字符串 字符数组的初始化有两种方式: 但其实使用字符常量初始化数组的时候,可以不加上这个 '\0',而使用字符串初始化字符数组的时候,是自动... -
字符数组与字符串,字符数组与字符指针(总结大全)
2014-04-06 12:10:221.误区:字符数组就是字符串 -
字符数组、字符串数组转换成字符串
2018-08-03 14:39:20一、字符数组to字符串 直接声明 char[] c={'a', 'b', 'c'}; String s = new String(c); 二、字符串数组to字符串 string是不可变类——利用StringBuffer String[ ] str = {"abc", "dfe&... -
二维字符数组与字符串数组的使用
2020-03-20 17:34:15二维字符数组与字符串数组的使用 一维字符数组的定义形式如下: <存储类型>char<数组名>[<常量表达式>]={<初始值>}; 二维字符数组定义的形式是: <存储类型>char<数组名>... -
c语言 字符数组与字符串的使用详解(在c语言中,将字符串作为字符数组来处理)
2018-04-15 14:36:181、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花... -
C++ 不能通过给字符数组名赋值的方法给字符数组赋值
2019-03-30 21:49:09”的赋值语句是错误的,因为在C++中,无法通过给字符数组名赋值来实现给字符数组每一个元素赋值。 正确的赋值方法应该是: 通过for循环来赋值 #include<iostream> using namespace std; int main(){ char ... -
matlab之str与char:字符串数组与字符数组
2018-12-28 11:01:52字符串数组是双引号的; a="hello"; 字符数组是单引号的: b='hello'; matlab2016之后越来越多的使用字符串数组,两者可以做如下转换: a=string(b); b=char(a); ... -
C语言二维字符数组详解
2019-07-06 23:28:10二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第一维大小][第二维大小]; 如: char c[3][10]; //... -
java新手:字符串数组、字符数组和字符串之间的转换
2018-09-20 13:03:04(1)字符串和字符数组的转化 // 字符串转化成字符数组 String str = "abcdefg"; char[] ch = str.toCharArray(); //输出a System.out.println(ch[0]); //字符数组转化成字符串 ... -
C语言字符数组
2019-04-19 17:00:50字符数组来处理字符串。 二、字符数组的定义 因为字符数组是存放字符的数组,故其 与数组定义类似。其定义一般为: char a[10]; 表示定义了10个字节的连续内存空间。 三、字符数组的初始化 我们使用字符串来初始化... -
字符数组和字符串
2017-01-26 22:52:04一、字符数组和字符串的再认识此处关于字符串是否是字符数组的问题,此处我们需要明确: 字符数组,完整地说叫字符类型的数组。字符数组不一定是字符串。 字符串是最后一个字符为NULL字符的字符数组。字符串一定是... -
C语言中的字符数组与字符串及输入输出
2018-09-07 22:32:05字符数组与字符串: 字符串数组是一种特殊的字符数组。当字符数组以数字0结尾(等价于'\0')时,就是一个字符串数组,反之就是字符数组。所以说,字符串数组,就是特殊的字符数组。 C语言中没有字符串这种数据类型,... -
字符数组,字符指针,指针数组(字符串)的比较与使用
2019-04-27 16:29:18文章目录字符数组与字符指针字符数组字符指针指针数组(字符串) 字符数组与字符指针 在C语言中,可以用两种方法表示和存放字符串: (1)用字符数组存放一个字符串 char str[]="I am happy"; (2)用字符... -
【Java笔记】将一个字符数组的值拷贝到另一个字符数组中
2019-04-18 19:08:05//将一个字符数组的值拷贝到另一个字符数组中。 char[] a={'J','a','v','a'}; char[] b=new char[a.length]; //方法一:for循环 for (int i = 0; i < b.length; i++) { b[i]=a[i]; } ... -
C语言—字符串与字符数组,字符串数组与字符串指针的区别
2020-02-17 16:55:44字符串与字符数组 字符串一定是一个char的数组,但char的数组未必是字符串。——以字符’\0’结尾的char数组就是一个字符串,但如果char数组没有以’\0’结尾,那么就不是一个字符串,只是普通字符数组,所以字符串... -
字符 字符串 字符数组 字符串指针 指针数组
2018-10-23 16:00:06一、字符指针、字符数组 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。 char *ps="C ... -
c语言中字符数组和字符指针的区别:(一句话,一旦要修改就用字符数组)
2016-07-18 01:23:27看下面两个申明: char *str =“Hello World”; char str1[] =“Hello World”; ...字符数组和字符指针的区别: ...2,申明为字符数组时,str1位数组名,而神明为字符指针时str位指针变量,可以被修改重新 -
C++ 字符数组 :字符数组相互赋值
2019-10-30 10:41:52功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 例如: #include <iostream> #incl...
-
上海交大《离散数学》模拟样卷及参考答案.pdf
-
linkedin总共能加30000个好友
-
Android事件分发机制四:学了事件分发有什么用?
-
python数据分析基础
-
LeetCode 面试题 16.17. 连续数列
-
Redis数据库入门与使用
-
基本Widgets(25):【类】QLabel [官翻]
-
Web安全攻防之SQLmap使用
-
微信支付2021系列之付款码支付一学就会java版
-
python办公自动化技巧
-
答案往往就在问题的旁边
-
考试时间个人规划2021
-
输入三个整数,按由小到大排序。2021-01-26
-
采用GUIDE建立GUI
-
java工厂模式实例
-
PHP支付宝微信支付配置教程
-
瑞萨E1仿真器(R0E000010KCE00)支持的MCU系列--RX Family
-
2020深度学习算法岗位最全面面试题
-
Red_Hat_Enterprise_Linux-8-8.3_Release_Notes-zh-CN.pdf
-
DOM案例 动态创建表格