当前位置: 首页 > news >正文

C语言学习笔记5

一、综述

昨天学习了字符串,但是因为时间太晚没有写博客,今天补上。

二、正文

(1)字符串的定义

1、概述

字符串算是比较复杂的一块知识,首先,字符串的定义是,包含一组同一类型的数据的合集,数组可以存放一个或多个数据,但是数量不能为0,数组可以包含多个数据,但是类型需要相同。

2、字符串的初始化

字符串的初始化分为完全初始化和不完全初始化。

#include<stdio.h> int main() { int arr[10] = {0} ; int arr1[5] = {"12345"} ; int arr2[] = {"12345"}; return 0 ; }

其中arr属于不完全初始化,数组名后面的[]中的数字表示字符串的长度,arr的长度为10,但是只使用了0进行初始化。

arr1属于完全初始化,因为arr1的字符串长度为5,里面放了,1,2,3,4,5,进行了完全初始化。

arr2也属于完全初始化,因为arr2没有指定字符串长度,但是后面输入了,1,2,3,4,5进行初始化,系统会自动将arr2的字符串长度设置为5.

3、字符串的结束

关于字符串还有个知识点是,字符串中默认会在结尾加一个\0来表示字符串的结束,如果没有\0则会导致系统错误识别字符串,导致输出乱码。

#include<stdio.h> int main() { int arr[3] = {'1','2','3'} ; printf("%s" , arr) ; return 0 ; }

上面这段代码的输出结果就是在3后面会出现乱码,因为系统只能读到3,但是后面没有\0作为结束标志,系统会试图读取一个字符,但是因为没有给定所以系统会随机读取,在不同的系统上,会有不同的乱码样式,但是总归是一种错误的写法。

4、字符串的长度

另外要说一下字符串的长度,字符串的长度通常用sizeof来进行计算,sizeof(arr)计算的就是字符串总共有多长,sizeof(arr[0])则是计算字符串中单个字符的长度。

因为字符串不止一种类型,字符串可以是任意类型的,所以如果需要计算字符串总共有多少个字符的话可以用sizeof(arr)/sizeof(arr[0])来进行计算,[0]中的0可以替换为任意数字,并不会影响计算结果。

strlen也是用来计算字符串长度的,但是strlen会将\0也计算到字符串的长度中,sizeof则会在读到\0的时候忽略\0并计算结果。

5、输出字符

输出指定字符需要指定字符的下标才可以,字符的下标会从0开始计算例如:

#include<stdio.h> int main() { int arr[] = {"123456"} ; printf("%s" , arr); printf("%d" , arr[1]); return 0 ; }

这段代码的输出结果为,1234562,因为%s输出的是整个字符串,所以会把123456这几个在字符串里的字符全部输出,2则是因为arr[1]表示输出字符串中第二个字符,而第二个字符是2.

(2)、字符串的维度

1、维度讲解

字符串分为一维字符串,二维字符串,多维字符串

一维字符串就是最基本的字符串,只有一组字符串。

二维字符串就是包含两个字符串的字符串。

多维字符串即为包含两个或以上二维字符串的字符串,统称多维字符串。

#include<stdio.h> int main() { int arr[] = { 0 } ; int arr1[] = { 0 } ; int arr2[] = {arr,arr1} ; int arr3[] = {arr,arr1} ; int arr4[] = {arr2,arr3} ; return 0 ; }

这当中arr、arr1为1维数组,arr2、arr3为二维数组、arr4为多维数组。

2、二维数组的初始化,及输出

#include<stdio.h> int main() { int arr[2][3]={1,2,3,4,5,6}; int arr1[2][3]={"123","456"}; printf("%s" , arr ); printf("%d" , arr1[1][1]); return 0 ; }

二维数组的初始化需要先确定列数,及第一个[],再确定行,即第二个[],列可以不用给定,但是行必须给定,每行确定是多长以后,如果初始化所用的字符超出则会自动放到下一行中,但是如果不给定每行多长则会报错。

初始化可以使用第一种方式,及每个字符中间用,隔开,也可以使用第二种,将两串字符串用""包裹,“,”分隔也是可行的。

字符串的输出则是使用%s进行输出表示输出字符串,%c是输出单个字符,想要输出二维数组中的特定位置的字符时需要指定行和列才可以精准输出。

如上面的代码,printf("%d" , arr1[1][1]);的输出结果就是5,因为5是第2行,第2个字符。

http://www.jsqmd.com/news/673395/

相关文章:

  • 3分钟学会ncmdump:终极网易云音乐NCM文件解密转换指南
  • Go语言如何做协程调度_Go语言协程调度原理教程【实用】
  • HTML怎么实现记住我功能_HTML checkbox保存登录状态【方法】
  • 想给游戏加个BGM?试试用C和minimp3实现一个轻量级跨平台音频播放模块
  • Qwen3.5-2B低门槛部署指南:无Linux经验用户也能完成的5步流程
  • 避坑指南:沁恒CH582/CH583 Sleep模式下RTC唤醒的中断与主频那些事儿
  • 阿里通义实验室“变形金刚“:当AI探索助手学会了按需切换记忆模式
  • SAP PS 项目预算按 “成本计划→预算分配→执行监控→调整→结算→关闭” 的阶段推进,核心表为 BPGE/BPJA(总计 / 年度预算)、BPBE(行项目)、RPSCO(汇总成本 / 预算),配合
  • 别再死记硬背了!用Python手把手教你构建NLP中的共现矩阵(附完整代码与SVD降维实战)
  • 终极风扇控制指南:5分钟让Windows电脑安静如新的完整教程
  • Gemma-3-270m入门指南:从模型选择到提问技巧的完整新手教学
  • 嵌入式BI革命:SaaS/ISV厂商如何用衡石科技快速上线数据分析能力
  • Debian 12.10 root 登录失败,两步解决!
  • AngularJS ng-model 指令
  • PCB绘制
  • Blazor + WASM + WebGPU 实时渲染面试突击包:含WebAssembly SIMD加速、GPU缓冲区绑定、帧同步调试全流程(仅限Q2开放下载)
  • 大恒相机取消曝光限制(超长曝光)设置与代码实现(C/C++/C#)
  • WinClaw安全实战 10|5分钟微信接入指南:零代码远程操控电脑,AI助手随身带
  • Gemini CLI Skills 技能扩展全景指南:内置、社区与自定义三条路径
  • 当今工程师Superpowers进化论:从VibeCoding到Agent IDE,源码级重构你的编码内核!
  • Debian 12.5 一键安装 Oracle 11GR2 单机
  • 告别CANtest和ECAN Tools:用Python脚本玩转ZLG/创芯CAN盒的自动化测试
  • 昆仑天工AI突破:游戏世界生成器实现实时可探索虚拟空间创建能力
  • EMCC 13.5 安装中断,如何清理 OMS 库?
  • Z-Image-Turbo Web服务日志调试:从backend/main.py异常堆栈定位LoRA加载失败
  • 2026 年了,为什么你还在手动安装 Oracle 数据库?
  • Modelsim仿真遇到vsim-12027和vlog-13276?可能是你的Verilog连接和例化出了这些细节问题
  • 2026年粉笔教育深度测评:AI如何重塑职业教育新范式?
  • 【Dify国产化测试黄金标准】:12类中间件兼容矩阵、5轮压力测试阈值、4项国密SM4/SM2集成验证
  • ExifToolGUI完整指南:告别命令行,图形化批量管理照片元数据的终极方案