鬼魅王子 发表于 2019-12-7 23:53

课本上的一道题目代码的错误挺多的

#include<stdio.h>
  #include<string.h>
  fun(char *w,int n)
  {
  char t, *s1,*s2;
  s1=w;
  s2=w+n-1;
  while(s1<s2)
  {
  t=*s1++;
  *s1=*s2--;
  *s2=t;
  }
  }
  main()
  {
  char *p;
  p="1234567";
  fun(p,strlen(p));
  puts(p);
  }

这样再DEV C++里面是没有结果的
必须吧char *p;p="1234567";
改成char p[]="1234567";
才有结果
具体原因是什么我不清楚,求解答

Lixinist 发表于 2019-12-8 01:02

"1234567"是存在于只读数据区段的字符串,是const char类型
p是char *类型。你硬要用的话就转换类型,p=(char*)"1234567";或者用const char *p
你改的那个是char[]的初始化操作,语法允许。如果你写成char p[];p="1234567";也是不允许的
页: [1]
查看完整版本: 课本上的一道题目代码的错误挺多的