首页
社区
课程
招聘
未解决 请教一个C语言的新标准语法
发表于: 2020-7-17 17:17 1784

未解决 请教一个C语言的新标准语法

2020-7-17 17:17
1784
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2018
活跃值: (1879)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
一个数组,只能存5个字符串,每个字符串只能4个字符
2020-7-17 17:40
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上的意思应该是把'\0'也算一个字符了吧?
2020-7-17 18:02
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int i,j=0;
    char Buffer[5][5] = {"sYste","mk1t\0"};
    for (i = 0;i<5;i++)
    {
        for (j = 0; j <5; j++)
        {
            printf("%c\n",Buffer[i][j]);
        }
        
    }
    return 0; 
}

你按照这个方式运行一下,你会发现每组可以存五个字符串,只要有初始化了以后,后面的就会被初始化为0
2020-7-17 18:09
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
sYstemk1t #include #include #include int main() {    int i,j=0;    char Buffer[5][5] = {"sYs ...

int main()
{
    int i,j=0;
    char Buffer[5][5] = {"s","g"};
    for (i = 0;i<5;i++)
    {
        for (j = 0; j<5; j++)
        {
            printf("%d,%d,%c\n",i,j,Buffer[i][j]);
        }

    }
    return 0;
}



运行结果


0,0 = s

1,0 = g

其余都是0,怎么理解啊?




























最后于 2020-7-17 18:36 被limee编辑 ,原因:
2020-7-17 18:17
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
char Buffer[5][5] = {"sYste","mk1t\0"};

这里是不是应该这样啊

char *Buffer[5][5] = {"sYste","mk1t"};
2020-7-17 18:40
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
limee sYstemk1t #include #include #include int main() { &nbsp; &nbsp ...
这个是编译器做的,如果你只初始化了一个值,那么后面的数据都会被填充成为0!
2020-7-17 18:57
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
limee char Buffer[5][5] = {"sYste","mk1t\0"}; 这里是不是应该这样啊 char *Buffer[5][5] = {& ...

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

int main(void)

{

    int count = 5;

    char Buffer[5][5] = {"Hello","Hell\0","Hell\0","Hell\0","Hell\0"};

    for (size_t i = 0; i < count; i++)

    {

        for (size_t j = 0; j < count; j++)

        {

            printf("%c\n",Buffer[i][j]);

        }

        

    }

    

    return 0;


}




你可以这么理解,Buffer[0][4]元素的内容你可以自己填写并且初始化,或者让编译器给你初始化为\0

上传的附件:
  • 1.PNG (746.51kb,1次下载)
2020-7-17 21:43
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
limee char Buffer[5][5] = {"sYste","mk1t\0"}; 这里是不是应该这样啊 char *Buffer[5][5] = {& ...

或者这么理解吧!

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

int main(void)

{

int count = 5;

char Buffer[5][5] = { "Hell\0", "Hell\0"};

for (size_t i = 0; i < count; i++)

{

for (size_t j = 0; j < count; j++)

{

printf("%c\n", Buffer[i][j]);

}


}


return 0;


}


你看内存排列,前面我们主动初始化的值和后面没有被初始化的值!



上传的附件:
  • 1.PNG (581.17kb,0次下载)
2020-7-17 21:47
0
游客
登录 | 注册 方可回帖
返回
//