• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
格局
技术\业务\管理
博客园    首页    新随笔    联系   管理    订阅  订阅

字符串与指针

#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都指向字符串的首地址。

   

posted @ 2008-09-05 11:42  惠众益自  阅读(260)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3