C语言char类型指针数组问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

a123456678 2016-06-08 20:28:28 3411

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

指针int 指针问题 c语言char问题 c语言char指针问题 c语言int
分享到
取消 提交回答
全部回答(7)
  • 游客x4uu57rrcwjuo
    2020-03-19 10:49:50

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

    0 0
  • 一生有你llx
    2019-07-17 19:32:42

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

    0 0
  • xwaby
    2019-07-17 19:32:42

    这里你要区分清楚指针数组和数组指针的概念。
    定义中 char *words[4]={"aaaa","bbbb","ccccc","dddd"}
    words是指针数组,分别指向不同字符串。
    words[2]是指向"cccc"的指针,但是是数组指针,即"cccc"是字符数组,words[2]指向了第一个字符的。
    固*(words[2])取值操作时,得到的是'c'。

    0 0
  • nothingfinal
    2019-07-17 19:32:42

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

    0 0
  • xumaojun
    2019-07-17 19:32:42

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

    0 0
  • 小柒2012
    2019-07-17 19:32:42

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

    0 0
  • a123456678
    2019-07-17 19:32:42

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

    0 0
滑动查看更多
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题
推荐课程