Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39213
  • 博文数量: 10
  • 博客积分: 193
  • 博客等级: 入伍新兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-04 08:52
文章分类

全部博文(10)

文章存档

2012年(10)

我的朋友

分类: C/C++

2012-01-23 22:06:50

首先是测试源码,FC14,gcc

#include

int reverse(int n,char *array)
{
char temp;
int i;
if(n==0)
return 0;
else
{
temp=array[0];
for(i=0;i
{
array[i]=array[i+1];
}
array[n-1]=temp;
// printf("%s\n",array);
reverse(n-1,array);
}
}

int main()
{
char array[]="abcde";
//char *array="abcde";
reverse(5,array);
printf("%s\n",array);
return 0;
}

如果是 char array[]就可以执行成功,而char *array就不行。
这是因为 char array[]="abcde" 是创建了一个字符数组,数组内容已改变,但是 指针array指向的地址不能改变。
而 char *array="abcde",是创建了一个字符指针,该指针指向 字符常量“abcde”,字符常量里的内容无法改变,但是 指针array可以指向别的地方。
阅读(1110) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:兔子生兔子的问题!

给主人留下些什么吧!~~