C语言——字符数组

news2024/11/27 19:58:22

一、字符数组的定义

语言字符数组的定义是指在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));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

13- 函数的定义与使用+形参实参区分

13- 函数的定义与使用形参实参区分 文章目录 13- 函数的定义与使用形参实参区分一、函数的定义与使用1.1 函数的结构1. 函数头2. 函数体 1.2 示例代码例子 1&#xff1a;无参数和无返回值的函数例子 2&#xff1a;带参数和返回值的函数 1.3 函数的基本语法1.4 函数的使用示例例…

「动态规划」如何计算能获得多少点数?

740. 删除并获得点数https://leetcode.cn/problems/delete-and-earn/description/ 给你一个整数数组nums&#xff0c;你可以对它进行一些操作。每次操作中&#xff0c;选择任意一个nums[i]&#xff0c;删除它并获得nums[i]的点数。之后&#xff0c;你必须删除所有等于nums[i] …

统信UOS1070上配置文件管理器默认属性02

原文链接&#xff1a;统信UOS 1070上配置文件管理器默认属性01 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在统信UOS 1070上配置文件管理器默认属性的第二篇文章——配置工作区视图。文件管理器中的工作区视图配置可以帮助我们更好地组织和管理文件&#xff0c;…

“群模时代”,国产AI大模型的进击

近期&#xff0c;国内多款大模型重磅消息不断。 1 3月&#xff0c;月之暗面的Kimi升级迭代后&#xff0c;长文本能力达到尚未上线的GPT-4.5Turbo的10倍。 2 4月&#xff0c;商汤科技发布的“日日新SenseNova”5.0多模态大模型在主流客观评测上&#xff0c;中文理解、知识储…

arm开发板移植sshd

移植sshd 文章目录 移植sshd1、准备工作2、编译zlib3、编译openssl4、编译openssh5、其他旧版本6、部署测试7、多用户配置8、sshd_config示例 1、准备工作 准备openssh-9.5p1.tar.gz openssl-1.1.1w.tar.gz zlib-1.2.11.tar.gz 我在http://10.45.156.100/IG2100/IG2100.git …

栈的实现和括号匹配问题

1.什么是栈 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xf…

数据中心智能化运维发展研究报告(2023)解读

数据中心智能化运维发展研究报告&#xff08;2023&#xff09;解读 《数据中心智能化运维发展研究报告&#xff08;2023&#xff09;》探讨了数据中心智能化运维的概念、核心内容、实际应用和发展建议。报告指出&#xff0c;通过人工智能、大数据等新一代信息技术的深度应用&a…

【recast-navigation-js】使用three.js辅助绘制Agent寻路路径

目录 说在前面setAgentTarget绘制寻路路径结果问题其他 说在前面 操作系统&#xff1a;windows 11浏览器&#xff1a;edge版本 124.0.2478.97recast-navigation-js版本&#xff1a;0.29.0golang版本&#xff1a;1.21.5上一篇&#xff1a;【recast-navigation-js】使用three.js辅…

STM32CubeIDE使用过程记录

最近在做一款机器人的开发&#xff0c;使用到了STM32CubeIDE&#xff0c;这里记录一些使用技巧方便后续查阅。 STM32CubeIDE使用过程记录 快捷键开启代码自动补全功能看门狗设置CRC设置IO口取反定时器设置 及 定时器中断外部中断GPIO配置STC15单片机GPIO模式配置片内闪存&#…

PyTorch学习7:加载数据集

文章目录 前言一、epoch&#xff0c;batch-size和iteration二、示例1.说明2.代码示例 总结 前言 介绍PyTorch中加载数据集的相关操作。Dataset和DataLoader 一、epoch&#xff0c;batch-size和iteration epoch&#xff1a;所有训练数据完成一次前馈和反馈 batch-size&#x…

深度学习革命-AI发展详解

深度学习革命 《深度学习革命》是一部引人深思的作品&#xff0c;详细讲述了深度学习技术的发展历程及其对各个行业的深远影响。由杰出的计算机科学家、深度学习专家撰写&#xff0c;这本书不仅适合科技领域的专业人士阅读&#xff0c;也为普通读者提供了一个理解人工智能革命…

Vue TypeScript 实战:掌握静态类型编程

title: Vue TypeScript 实战&#xff1a;掌握静态类型编程 date: 2024/6/10 updated: 2024/6/10 excerpt: 这篇文章介绍了如何在TypeScript环境下为Vue.js应用搭建项目结构&#xff0c;包括初始化配置、创建Vue组件、实现状态管理利用Vuex、配置路由以及性能优化的方法&#x…

【电机控制】FOC算法验证步骤——电流环PI参数、速度环PI参数

【电机控制】FOC算法验证步骤——电流环PI参数、速度环PI参数 文章目录 前言一、电流环PI1.TI手册 二、速度环PI1.TI手册——根据稳定性和带宽计算速度环PI参数2.TI手册——根据稳定性和带宽计算速度环PI参数 三、参考文献总结 前言 【电机控制】直流有刷电机、无刷电机汇总—…

Python私教张大鹏 Vue3整合Vue Router之编程式导航

除了使用 <router-link> 创建 a 标签来定义导航链接&#xff0c;我们还可以借助 router 的实例方法&#xff0c;通过编写代码来实现。 导航到不同的位置 注意: 下面的示例中的 router 指代路由器实例。在组件内部&#xff0c;你可以使用 $router 属性访问路由&#xff…

vue-cli是什么?和 webpack是什么关系?

前言 Vue CLI是Vue.js项目的官方脚手架&#xff0c;基于Node.js与Webpack构建。安装Vue CLI前需确保Node.js已安装&#xff0c;随后通过npm全局安装。Vue CLI能迅速创建和管理Vue.js项目&#xff0c;提升开发效率。而Webpack则负责资源打包&#xff0c;通过配置文件管理依赖、插…

FiRa标准UWB MAC实现(三)——距离如何获得?

继续前期FiRa MAC相关介绍,将FiRa UWB MAC层相关细节进一步进行剖析,介绍了UWB技术中最重要的一个点,高精度的距离是怎么获得的,具体使用的测距方法都有哪些,原理又是什么。为后续FiRa UWB MAC的实现进行铺垫。 3、测距方法 3.1 SS-TWR SS-TWR为Single-Sided Two-Way Ra…

通过python操作redis(windows)

注意在连接之前要确保 redis 服务已经安装。 更多的安装信息请查看&#xff1a;https://blog.csdn.net/sinat_20471177/article/details/132042779?spm1001.2014.3001.5501 redis 模块 Python 要使用 redis&#xff0c;需要先安装 redis 模块。如果要做数据导入/导出操作的…

动手学深度学习4.10 实战Kaggle比赛:预测房价-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;实战 Kaggle 比赛&#xff1a;预测房价_哔哩哔哩_bilibili 本节教材地址&#xff1a;4.10. 实战Ka…

公式转换坑

在线LaTeX公式编辑器-编辑器 (latexlive.com) 这个好用 latex输入后转mathtype等 1 \mathcal{V}\{0,1,\ldots,|\mathcal{V}|-1\} 这个玩意在Word死活打不出来 使用下面的方法也不行 mathtype也不行 故换符号之 LaTeX公式与MathType公式如何快速转换-MathType中文网 如何在…

.Net实现SCrypt Hash加密

方案1 &#xff08;加密后存储“算法设置”、“盐(随机值)”、“Hash值”&#xff0c;以“$”分隔&#xff09;&#xff1a; //Nuget引入SCrypt.NET库 using Org.BouncyCastle.Crypto.Generators; using Scrypt; using System; using System.Security.Cryptography; namespace …