字符和字符串有什么区别?

时间:2020-07-03 09:37:39

标签: c string char cs50

我正在进行CS50编码练习,但没有字符串和字符。我对它们有问题,因为我无法理解它们是什么。我不知道字符和字符串之间的区别,因为它们对我来说似乎相同。我的代码是:

public class ChannelGroupChannelsControllerTests
{
    private readonly ChannelGroupChannelsController _controller;
    private readonly IMediator _mediator;

    public ChannelGroupChannelsControllerTests()
    {
        var service = A.Fake<IReadChannelGroupChannel>();
        var mapper = A.Fake<IMapper>();

        var channelGroupChannel = new ChannelGroupChannel
        {
            Id = 1,
            ChannelGroupId = 1,
            ChannelId = 1,
            Channel = new Channel { Name = "Channel Name" }
        };

        _mediator = A.Fake<IMediator>();
        _controller = new ChannelGroupChannelsController(_mediator, mapper);

        A.CallTo(() => _mediator.Send(A<GetChannelGroupChannelById>._, A<CancellationToken>._)).Returns(channelGroupChannel);
    }


    [Fact]
    public async Task ChannelGroupChannelsController_ById()
    {
        var result = await _controller.ById(1);

        (result.Result as StatusCodeResult)?.StatusCode.Should().Be((int)HttpStatusCode.OK);
        result.Value.Should().BeOfType<ChannelGroupChannelVM>();
    }
}

,但它打印AA而不改变,无论它是字符还是字符串。 如果我这样做:

#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。我一点都没有看到!请帮助我理解。 我从字符更改为字符串,但结果没有改变。请帮我弄清楚。

4 个答案:

答案 0 :(得分:0)

char代表一个字符。字符串是一系列字符。

答案 1 :(得分:0)

string是String的别名,我们可以在其中存储Char Called Word的集合,例如 字符串名称=“ mukesh”;但是在char中,我们只能存储单个字符,例如

char ch ='b';

答案 2 :(得分:0)

字符串是一个字符数组。

char只是英语中的一个字符或字母。

类似char的例子是'A','B','w','3','\ n'等。

在C / C ++中,char占用1个字节的空间,并且用单引号引起来。

'\n''\0'之类的特殊字符也是字符。

它们占用1个字节的存储空间,也可以表示为整数。在Google上搜索ASCII以了解整数关系。

string是字符的集合。

例如“约翰”,“你好”,“什么是苹果?”。

字符串“ John”中的字符为John\0。字符串的长度为5。字符串始终以\0字符结尾。

字符串在C / C ++中用双引号引起来。

答案 3 :(得分:0)

string 有一些可能的通用定义(C标准定义“ 字符串是连续的字符序列,以第一个空字符结尾,包括第一个空字符。”,请参见C11 7.1.1

a)由char个值组成的数组,其中最后一个值为0,例如

(char[4]){'b', 'a', 'r', '\0'}  // a) string

b)包含char的{​​{1}}值数组,例如

'\0'

最后一个字符串可以“增长”,因为基础数组具有足够的空间

c)指向上述数组之一或该数组中间某个位置的指针,例如

(char[7]){'f', 'o', 'o', '\0', 'x', 'y', 'z'} // not an a) string; b) string

最后一个char array[10] = "foo\0bar\0X"; // not an a) string char *p = &arr[4]; // not an a) string, not a b) string 不是定义a)的字符串,而是定义2)的字符串; array指向p:根据定义c),该指针是一个字符串。

始终确保您知道您在讨论哪种类型的字符串!

在这些定义中,c)是离C标准定义最远的一个。