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

容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法

char* a[] 和 char a[] 的区别

char* a[] 和 char a[] 是 C 语言中数组的不同声明方式,二者具有以下区别:

char a[] 声明的是一个字符数组,其中存储的是一串字符。此时,a 可以被视为一个指向字符的指针。
char* a[]则声明了一个指针数组,即一个由指向字符的指针组成的数组。
下面来分别讨论它们的用法:

char a[]

假设现在需要定义一个字符串变量,并对其赋值:

    char myString[] = "Hello World";

可以看到,在使用 char a[] 时,可以在定义该数组时直接给其赋初始值(初始化),同时数组的长度会根据初始值自动计算,因此可以省略数组长度的定义(如 char myString[12])。使用时,可以直接使用数组名 myString 或通过指针间接使用。

也就是说,在这里面 myString[0] = 'H'

char* a[]

现在需要定义一个由多个字符数组组成的指针数组,可以这样定义:

    char* allStrings[] = {"string1", "string2", "string3"};

此时,allStrings 就是一个指向字符指针的数组。在使用 char* a[] 时,需要在定义数组时赋初始值,即字符串指针。其中,每个元素都是指向相应字符串的指针。例如上述代码,allStrings 数组包含有三个元素,每个元素都是一个字符串的地址。allStrings[0] == "string1"

当需要访问字符串内容时,可以使用类似于 *(allStrings + 1) 的方法,直接定位到字符串指针的位置,然后再输出字符串内容。

总之,虽然 char a[] 和 char* a[] 都涉及到指针和数组,但前者主要用于定义和操作字符数组,而后者则用于构建由字符串指针构成的数组。

总结

char *a[] 就是一个字符串数组,char a[] 就是一个字符数组

http://www.lryc.cn/news/32211.html

相关文章:

  • 认识Spring(下)
  • Educational Codeforces Round 144 (Rated for Div. 2) C - Maximum Set
  • 学python的第四天---基础(2)
  • spring之refresh流程-Java八股面试(六)
  • 【C语言】刷题|链表|双指针|指针|多指针|数据结构
  • 糖化学类854262-01-4,Propargyl α-D-Mannopyranoside,炔丙基 α-D-吡喃甘露糖苷
  • 项目管理工具DHTMLX 在 G2 排名中再创新高
  • 28 位委员出席,龙蜥社区第 15 次运营委员会会议顺利召开
  • 自然语言处理-基于预训练模型的方法-chapter3基础工具集与常用数据集
  • 【SpringMVC】@RequestMapping
  • 【深度学习】BERT变体—SpanBERT
  • 根据身高体重计算某个人的BMI值--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 高并发编程JUC之进程与线程高并发编程JUC之进程与线程
  • css基础
  • Unity - 搬砖日志 - BRP 管线下的自定义阴影尺寸(脱离ProjectSettings/Quality/ShadowResolution设置)
  • 如何在SSMS中生成和保存估计或实际执行计划
  • mac 环境下安装MongoDB
  • RTOS中相对延时和绝对延时的区别
  • Solon2 项目整合 Nacos 配置中心
  • Linux 路由表说明
  • MIPI协议
  • 第十届CCF大数据与计算智能大赛总决赛暨颁奖典礼在苏州吴江顺利举办
  • PMP高分上岸人士的备考心得,分享考试中你还不知道的小秘密
  • ubuntu下编译libpq和libpqxx库
  • ESP-C2系列模组开发板简介
  • linux权限管理
  • 提高生活质量,增加学生对校园服务的需求,你知道有哪些?
  • Antlr4:使用grun命令,触发NoClassDefFoundError
  • 基于rootfs构建Docker镜像
  • 电脑文件软件搬家迁移十大工具