关于char *s的问题

风雨后的李爷 2016-01-22 10:13:07
针对以下程序

#include <stdio.h>
#include <stdlib.h>
int main()
{
int k;
char *s="12134211";
int v[4]={0,0,0,0},i;
for(k=0;s[k];k++)
switch(s[k])
{
case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);
//return 0;
system("pause");
}


1.char *s与char s的区别
2.s初始地址是49,为什么当k=2时,又回到了初始地址49呢


3.这个程序是实现字符串的计数吧,那么用switch是怎么实现计数的呢
...全文
458 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-01-23
  • 打赏
  • 举报
回复
switch中中的case 是标号 因此,执行很简单,符合条件转到标号执行 break,return ,goto 等跳转语句后,跳转到别处执行 break 跳出switch 块 return 跳出函数(函数返回) goto 跳到对应 的位置。 不过,一般switch 只有break,return 。很少用goto switch 块内的语句,除了进入switch 块做个选择外,顺序执行。 遇到到break,return ,goto 等则跳转。
ysmz555 2016-01-23
  • 打赏
  • 举报
回复
1.char *s与char s的区别 答:前者是指向字符类型的指针变量,存放的是地址,后者是字符变量,存放的是字符。 2.s初始地址是49,为什么当k=2时,又回到了初始地址49呢 答:图中说明了S的地址是49么?图中是*S,不是S,*S是读取指针S指向的元素值。这也就是为什么当K=2时,又回到49的原因了。 3、switch是开关语句,特性是如有break语句跳出该语句,没有从上往下执行一遍退出。
paschen 2016-01-22
  • 打赏
  • 举报
回复
switch中每个case后不加break会一直往下执行 char是一个字符,char*是指向字符的指针
苏叔叔 2016-01-22
  • 打赏
  • 举报
回复
1.char *s与char s的区别 答:类型显然不同 2.s初始地址是49,为什么当k=2时,又回到了初始地址49呢 49是字符'1'的ASCII值,不是地址。 关于指针 http://blog.csdn.net/zhangxiangdavaid/article/details/37885275
jiht594 2016-01-22
  • 打赏
  • 举报
回复
看书去吧 1,字符串和字符 2.‘49’是第一个值和第三个值,都是1,不是地址。 3,单步调试

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧