【问题标题】:pointer to char vs char pointer in cc中指向char的指针与char指针
【发布时间】:2021-11-26 23:21:24
【问题描述】:
#include <stdio.h>
int main()
{
    char c;
    c='z';
// Pointer to char
   char *d;
    d=&c;
    printf("%c",*d);

// char pointer
    char *d1="karthick";
    printf("%s",d1);
    return 0;
}

我已经声明了指向 char 和 char 指针(字符串)的指针。我可以看到它们的声明方式相同,那么它们在功能上有何不同?

【问题讨论】:

  • 指针可以指向单个值或值数组。字符串只是char 的数组,以空字符结尾。
  • pointer to charchar pointer 是一回事。在注释// char pointer 之后,您可以编写d="karthick"; printf("%s",d);,代码将生成相同的输出。区别在于printf 格式字符串:"%c""%s"%c 表示您只想看到指针指向的一个字符。这适用于dd1%s 表示您想查看指针指向的字符串。这不适用于d,因为d 不指向字符串。总之,dd1 都是 char 指针,但 d1 指向一个字符串,d 不是。

标签: c pointers char


【解决方案1】:

dd1 完全一样。两者都指向一个单个 char 对象;只是在d1 的情况下,单个char 对象是字符串 中的第一个字符,而d 指向不属于较大字符串的单个字符:

    char        char *
    +---+       
 c: |'z'| <---  d
    +---+
     ...
    +---+
    |'k'| <---- d1
    +---+
    |'a'|
    +---+
    |'r'|
    +---+
    |'t'|
    +---+
    |'h'|
    +---+
    |'i'|
    +---+
    |'c'|
    +---+
    |'k'|
    +---+
    | 0 |
    +---+

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2021-08-11
    • 2016-01-27
    • 1970-01-01
    • 2017-09-03
    相关资源
    最近更新 更多