一、字符数组的定义

语言字符数组的定义是指在C语言中可以使用一组连续的字符来存储和处理字符串。在定义字符数组时,需要指定数组的大小,并且可以初始化数组的内容。

1、字符数组方式:

char str[] = "Hello,world!";

2、指针方式:

char *str = "Hello,world!";

注:使用字符数组定义字符串时,数组的长度应该比字符串的长度多1, 使用指针方式定义字符串时,指针变量指向了字符串常量的首地址,无需指定数组长度

代码示例:

#include <stdio.h>
#include <string.h>
int main()
{    //注:字符串的长度不算结束符'\0',但是存储空间包含结束符。
    //双引号结束有'\0'的标志,单引号没有。(注:单个数组单元所占内存字节,与变量类型有关)
    char d[] = "xyz";
    char a[] = {'a','b','\0','c','\0'};//初始化字符数组时,建议最后一个字符以'\0'结尾。防止乱码。
    char b[] = {"abcd"};//字符串初始化字符数组
    char c[] = "abcde";
    printf("%s\n",a);
    printf("sizeof(a):%lu\n",sizeof(a));
    printf("sizeof(b):%lu\n",sizeof(b));
    printf("sizeof(c):%lu\n",sizeof(c));
    printf("sizeof(d):%lu\n",sizeof(d));

    printf("strlen(a):%lu\n",strlen(a));//字符串长度(即有多少元素,不包括'\0')
    printf("strlen(b):%lu\n",strlen(b));
    printf("strlen(c):%lu\n",strlen(c));
    printf("strlen(d):%lu\n",strlen(d));
    printf("|%c|\n",32);

    return 0;
}

运行结果;

ab
sizeof(a):5
sizeof(b):5
sizeof(c):6
sizeof(d):4
strlen(a):2
strlen(b):4
strlen(c):5
strlen(d):3
| |

二、笔试难题

11、char szstr[10];
strcpy(szstr,“0123456789”);
产生什么结果?为什么?

赋值“0123456789”有11个字节的数据大小(包括'\0'),超过szstr数组内存存储空间,出现段错误。

程序报错提醒:

修改后代码;

#include <stdio.h>
#include <string.h>

int main()
{
    char szstr[11];
    strcpy(szstr,"0123456789");
    printf("%s",szstr);
    return 0;
}

 运行结果;

0123456789

13、void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}
会出现什么问题?打印结果是是多少?

输出结果可能为0,因为strlen()输出的是aa字符数组初始化后存储的字符数。

而sizeof()输出的是aa字符数组能够存储的最大字节数。

修改后代码示例:

#include <stdio.h>
#include <string.h>

void main()
{
    char aa[10];
    printf("strlen(aa) = %d\n",strlen(aa));
    printf("sizeof(aa) = %d\n",sizeof(aa));
    char bb[10] = "162151";
    printf("strlen(bb) = %d\n",strlen(bb));
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部