字符和字符串有什么区别?
What is the difference between chars and strings?
我正在进行 cs50 编码练习,但我没有得到字符串和字符。我对它们有疑问,因为我不明白它们是什么。我不知道字符和字符串之间的区别,因为它们对我来说似乎是一样的。我的代码是:
#include<stdio.h>
int main(void){
char c=A;
printf("%c", c);
string a = A;
printf("%s", a);
}
但无论是字符还是字符串,它都会打印 AA 而不会改变。
如果我这样做:
#include<stdio.h>
int main(void){
char c=A;
printf("%c", c);
char a = A;
printf("%c", a);
}
它仍然打印 AA。即使我这样做:
#include<stdio.h>
int main(void){
string c=A;
printf("%s", c);
string a = A;
printf("%s", a);
}
它仍然打印 AA,即使我从字符换成字符串。我完全看不出有什么不同!请帮助我理解。
我从字符更改为字符串,但结果没有改变。请帮我解决一下。
一个char
表示一个字符。字符串是一系列字符。
string 是 String 的别名,我们可以在其中存储称为 Word 的 Char 集合
字符串名称=“穆克什”;但在 char 中我们只能存储单个字符,例如
char ch='b';
字符串是字符数组。
一个char
只是一个英文字符或字母。
类似字符的示例有 'A'、'B'、'w'、'3'、'\n' 等
在C/C++中,char
占用space的1个字节,并且在单引号内。
'\n'
、'[=13=]'
等特殊字符也是字符。
它们占用 1 个字节的存储空间,也可以表示为一个整数。在 google 上搜索 ASCII 以了解整数关系。
string
是一个字符集合。
例如“约翰”、“你好”、“什么是苹果?”。
字符串“John”中的字符是J
、o
、h
、n
、[=19=]
。字符串的长度为 5。字符串总是以 [=19=]
字符结尾。
字符串在 C/C++ 中的双引号内。
string 有一些可能的常用定义(C 标准定义“字符串是一个连续的字符序列,由第一个空字符。",参见 C11 7.1.1)
a) char
个值的数组,其中最后一个值为 0
,例如
(char[4]){'b', 'a', 'r', '[=10=]'} // a) string
b) 包含 '[=16=]'
的 char
值数组,例如
(char[7]){'f', 'o', 'o', '[=11=]', 'x', 'y', 'z'} // not an a) string; b) string
最后一个字符串可以“增长”,因为底层数组有足够的 space
c) 指向上述之一或指向此类数组中间某处的指针,例如
char array[10] = "foo[=12=]bar[=12=]X"; // not an a) string
char *p = &arr[4]; // not an a) string, not a b) string
最后一个array
不是定义a)的字符串,是定义2)的字符串; p
指向 'b'
:根据定义,该指针是一个字符串 c).
始终确保您知道您正在讨论的字符串类型!!
在这些定义中,c) 是距离 C 标准定义最远的一个。
我正在进行 cs50 编码练习,但我没有得到字符串和字符。我对它们有疑问,因为我不明白它们是什么。我不知道字符和字符串之间的区别,因为它们对我来说似乎是一样的。我的代码是:
#include<stdio.h>
int main(void){
char c=A;
printf("%c", c);
string a = A;
printf("%s", a);
}
但无论是字符还是字符串,它都会打印 AA 而不会改变。 如果我这样做:
#include<stdio.h>
int main(void){
char c=A;
printf("%c", c);
char a = A;
printf("%c", a);
}
它仍然打印 AA。即使我这样做:
#include<stdio.h>
int main(void){
string c=A;
printf("%s", c);
string a = A;
printf("%s", a);
}
它仍然打印 AA,即使我从字符换成字符串。我完全看不出有什么不同!请帮助我理解。 我从字符更改为字符串,但结果没有改变。请帮我解决一下。
一个char
表示一个字符。字符串是一系列字符。
string 是 String 的别名,我们可以在其中存储称为 Word 的 Char 集合 字符串名称=“穆克什”;但在 char 中我们只能存储单个字符,例如
char ch='b';
字符串是字符数组。
一个char
只是一个英文字符或字母。
类似字符的示例有 'A'、'B'、'w'、'3'、'\n' 等
在C/C++中,char
占用space的1个字节,并且在单引号内。
'\n'
、'[=13=]'
等特殊字符也是字符。
它们占用 1 个字节的存储空间,也可以表示为一个整数。在 google 上搜索 ASCII 以了解整数关系。
string
是一个字符集合。
例如“约翰”、“你好”、“什么是苹果?”。
字符串“John”中的字符是J
、o
、h
、n
、[=19=]
。字符串的长度为 5。字符串总是以 [=19=]
字符结尾。
字符串在 C/C++ 中的双引号内。
string 有一些可能的常用定义(C 标准定义“字符串是一个连续的字符序列,由第一个空字符。",参见 C11 7.1.1)
a) char
个值的数组,其中最后一个值为 0
,例如
(char[4]){'b', 'a', 'r', '[=10=]'} // a) string
b) 包含 '[=16=]'
的 char
值数组,例如
(char[7]){'f', 'o', 'o', '[=11=]', 'x', 'y', 'z'} // not an a) string; b) string
最后一个字符串可以“增长”,因为底层数组有足够的 space
c) 指向上述之一或指向此类数组中间某处的指针,例如
char array[10] = "foo[=12=]bar[=12=]X"; // not an a) string
char *p = &arr[4]; // not an a) string, not a b) string
最后一个array
不是定义a)的字符串,是定义2)的字符串; p
指向 'b'
:根据定义,该指针是一个字符串 c).
始终确保您知道您正在讨论的字符串类型!!
在这些定义中,c) 是距离 C 标准定义最远的一个。