• 字符串与指针


    #include"stdio.h"  
      void   main()  
      {  
      char   string[]="c language";  
      char   *p;  
      p=string   ;  
      printf("%s\n",string);//string不是地址名么?怎么输出的是字符串?  
      printf("%s\n",p);//p也是地址名怎么也输出字符串?  
      }
    答:%s当然是字符串拉,用%d就是地址了。跟输出格式有关。

    问:为什么printf("%s",*p);是错误的??  
    答:%s就当然是字符串啦%d就是地址  
      ("%s",*p),*p是字符串的首地址的值,也就是'c',它不是字符串,你用%s当然错了。
       printf("%c",*p)就不会报错了。

    数组名同时就相当于一个指向数组首位的指针,所以....  
      P是一个指向了数组首地址的指针

    由于%s是要输出一个字符串,所以要求的参数是一个以null结尾的字符串的首地址,而%c输出的是一个字符,所以需要*p

    例程1:

          printf("%c\n",string[6]);
         printf("%c\n",p[6]);

         这两个语句都可以正确输出u。

    例程2:

          printf("%d\n",string[6]);
          printf("%d\n",p[6]);

        这两个语句都可以正确输出字符u的地址。

    例程3:

          printf("%c\n",*(p+1));
         printf("%c\n",p[1]);

          这两个语句的作用相同。

    说明:p和string都指向字符串的首地址。

       

  • 相关阅读:
    修改linux下某一个文件夹下所有文件内容
    jenkins对结果进行断言问题
    linux 循环处理文件夹下所有文件脚本
    LR java Vuser 相关依赖JAR包,配置文件处置方法
    Jmeter函数 唯一取值 笔记
    jmeter+java vuser+rmi+dubbo脚本
    eclipse快捷键
    猫狗队列
    用固定长度的数组实现stack queue
    两个单链表相交的问题
  • 原文地址:https://www.cnblogs.com/inspurhaitian/p/1285010.html
Copyright © 2020-2023  润新知