C语言中如何实现字符指针指向的字符串输出至控制台?

2026-04-12 09:061阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计709个文字,预计阅读时间需要3分钟。

C语言中如何实现字符指针指向的字符串输出至控制台?

目录C语言输出字符指针问题例如:定义一个char *p=hello; 的字符指针,C语言指针求字符串长度C语言输出字符指针问题例如:定义一个char *p=hello; 的字符指针,C语言指针输出问题例如:首先清除C语言中的字符串在

目录
  • c语言输出字符指针问题
    • 例如定义一个 char * p = "hello";的字符指针
  • c语言指针求字符串长度

    C语言中如何实现字符指针指向的字符串输出至控制台?

    c语言输出字符指针问题

    例如定义一个 char * p = "hello";的字符指针

    首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对的是单个字符的操作,即指针操作,所以就叫它字符指针吧。。。)

    或者字符串数组(这里不在讨论字符串相关问题,前面博客有讨论过)这里的指针变量p,系统会为其重新分配内存。

    "talk is cheap , please show me your code"

    说多无用,放码过来

    有人会问,p不是指针变量吗?但是为什么printf("%s",p)他为什么打印的不是地址?

    答:

    是的p肯定是指针变量,它也一定是地址,但是别忘了在C语言中,系统都会默认在字符串末给我们加上\0用于结束字符串,所以用printf()输出时候,只要你打印格式是%s,系统知道我们要输出字符串,而且系统也可以确定字符串的长度,所以当你用%s打印字符指针p的时候就会输出字符串,如果你是以地址打印格式输出的话,系统就会给我们打印出地址, 如果你是解指针(*p),那么系统就取p指针指向的内容,此时看你自己以什么格式输出,就用什么格式打印。

    注意:

    在字符指针中p 、*p 和&p的区别:p是指针变量指向字符串首元素(前提对p指针没有进行指针操作),p中存放首元素的地址(一旦被初始化就,系统就为我们分配好了地址,而且地址也不能改变,因为字符指针是一个只读变量,你不能企图对一个初始化好的指针进行内部修改),而*p是对指针变量p进行解引用操作,也就是指针所指向的内容,而&p是对指针变量取地址,所以也就肯定不会和p的值相等,因为字符指针系统会为其分配内存,p的值是字符串首元素的地址。

    c语言指针求字符串长度

    int stren(char* str){ char* start=str; char* end=str; while(*end!='\0'){ end++; } return end-start; } #include<stdio.h> int main(){ char arr[]="bit"; int len=stren(arr); printf("%d\n",len); return 0; }

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

    标签:相关问题

    本文共计709个文字,预计阅读时间需要3分钟。

    C语言中如何实现字符指针指向的字符串输出至控制台?

    目录C语言输出字符指针问题例如:定义一个char *p=hello; 的字符指针,C语言指针求字符串长度C语言输出字符指针问题例如:定义一个char *p=hello; 的字符指针,C语言指针输出问题例如:首先清除C语言中的字符串在

    目录
    • c语言输出字符指针问题
      • 例如定义一个 char * p = "hello";的字符指针
    • c语言指针求字符串长度

      C语言中如何实现字符指针指向的字符串输出至控制台?

      c语言输出字符指针问题

      例如定义一个 char * p = "hello";的字符指针

      首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对的是单个字符的操作,即指针操作,所以就叫它字符指针吧。。。)

      或者字符串数组(这里不在讨论字符串相关问题,前面博客有讨论过)这里的指针变量p,系统会为其重新分配内存。

      "talk is cheap , please show me your code"

      说多无用,放码过来

      有人会问,p不是指针变量吗?但是为什么printf("%s",p)他为什么打印的不是地址?

      答:

      是的p肯定是指针变量,它也一定是地址,但是别忘了在C语言中,系统都会默认在字符串末给我们加上\0用于结束字符串,所以用printf()输出时候,只要你打印格式是%s,系统知道我们要输出字符串,而且系统也可以确定字符串的长度,所以当你用%s打印字符指针p的时候就会输出字符串,如果你是以地址打印格式输出的话,系统就会给我们打印出地址, 如果你是解指针(*p),那么系统就取p指针指向的内容,此时看你自己以什么格式输出,就用什么格式打印。

      注意:

      在字符指针中p 、*p 和&p的区别:p是指针变量指向字符串首元素(前提对p指针没有进行指针操作),p中存放首元素的地址(一旦被初始化就,系统就为我们分配好了地址,而且地址也不能改变,因为字符指针是一个只读变量,你不能企图对一个初始化好的指针进行内部修改),而*p是对指针变量p进行解引用操作,也就是指针所指向的内容,而&p是对指针变量取地址,所以也就肯定不会和p的值相等,因为字符指针系统会为其分配内存,p的值是字符串首元素的地址。

      c语言指针求字符串长度

      int stren(char* str){ char* start=str; char* end=str; while(*end!='\0'){ end++; } return end-start; } #include<stdio.h> int main(){ char arr[]="bit"; int len=stren(arr); printf("%d\n",len); return 0; }

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

      标签:相关问题