开发者社区> 问答> 正文

C语言char类型指针数组问题

今天遇到一个问题,在C语言中定义了一个指针数组:
char *words[4]={"aaaa","bbbb","ccccc","dddd"}
然后使用words[2]能直接拿出字符串cccc这个值,但是使用*(words[2])
发现拿出来的却是字符c
我的理解是 words[2]里面存储的是指向字符串"cccc"的指针 用words[2]拿出来的是地址,用*(words[i])拿出来的是指针的值,但是发现却完全不是这个情况 ,为什么呢?

展开
收起
a123456678 2016-06-08 20:28:28 4623 0
7 条回答
写回答
取消 提交回答
  • *(words[i])拿出来的是words[i]指向的字符串的第一个字符

    2020-03-19 10:49:50
    赞同 展开评论 打赏
  • 专注物联网

    *(words[i])拿出来的是words[i]指向的字符串的第一个字符

    2019-07-17 19:32:42
    赞同 展开评论 打赏
  • 这里你要区分清楚指针数组和数组指针的概念。
    定义中 char *words[4]={"aaaa","bbbb","ccccc","dddd"}
    words是指针数组,分别指向不同字符串。
    words[2]是指向"cccc"的指针,但是是数组指针,即"cccc"是字符数组,words[2]指向了第一个字符的。
    固*(words[2])取值操作时,得到的是'c'。

    2019-07-17 19:32:42
    赞同 展开评论 打赏
  • 软件开发,安全加密

    *(words[i])拿出来的是words[i]指向的字符串的第一个字符

    2019-07-17 19:32:42
    赞同 展开评论 打赏
  • 乐于学习与分析

    *(words[i])拿出来的是words[i]指向的字符串的第一个字符

    2019-07-17 19:32:42
    赞同 展开评论 打赏
  • 一个程序员,欢迎骚扰!!!

    char 类型 是一个字符 这意思 C语言好久没看了

    2019-07-17 19:32:42
    赞同 展开评论 打赏
  • 这个很好理解,我们来将问题拆分一下,首先是定义个字符串:
    char *w = "aaaa";
    那么定义完成之后w得到的就应该是a,因为w存储的是字符串的首地址,它的类型是指向字符的指针,表达式w拿到的正是这个地址中存储的字符a。
    然后是定义字符串数组:
    char *words[] = {"aaaa","bbbb"};
    words中存储的其实是一堆指针,这一堆指针组成了一个数组,其中words[0]这个指针正式第一个字符串的收地址,然后(words[0])又回到第一个问题中了,这不就是第一个问题中的w吗?

    2019-07-17 19:32:42
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多