亦行之 2024-03-10 09:17 采纳率: 34.5%
浏览 1
已结题

定义字符串数组加*与不加*

char result[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
如果是上述定义就是错误的
char result[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
为什么要加上
号才是正确的呢
为什么定义字符数组如
char end[3]={'a','s','d'};就是正确的而不需要加上*呢?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-10 09:18
    关注

    引自免费微信小程序:皆我百晓生

    在C语言中,字符数组和指针字符串是两种不同的数据类型。

    对于你的问题:

    1. 当你定义一个存储多个字符串的数组时,实际上是在声明一个多维数组。正确的方式是使用字符指针数组来存储这些字符串,因为字符串在C语言中以\0为结束标志的一维字符数组表示。所以,正确声明应该如下:
    char *result[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    

    这里,*result 表示 result 是一个指向字符(即字符串)的指针数组。每个元素都是一个指向该字符串首字符的指针。

    1. 而当你直接定义一串连续字符构成的数组时,如 char end[3] = {'a', 's', 'd'}; ,这并没有涉及字符串,只是简单地创建了一个包含三个字符的数组。这里不需要星号(*),是因为我们直接分配了内存空间来存储这三个字符,并且不涉及动态分配或指向字符串的指针。

    总结来说:

    • 对于存储单个固定长度字符串的情况,可以直接定义字符数组。
    • 对于存储多个字符串或者需要动态管理字符串的情况,通常使用字符指针数组,这时就需要使用星号(*)来表明是指针。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真