免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2481 | 回复: 16
打印 上一主题 下一主题

一个不太明白的指针问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-13 13:35 |只看该作者 |倒序浏览
#include "stdio.h"
  #include "string.h"
  void main()
  {
    char *p="asdf", *t="ASDF";
    strcpy(p,t); 为什么我加了这个就不能正常运行,问题出在哪里.?
    printf ("p = %s   t = %s\n",p,t);

  }

论坛徽章:
0
2 [报告]
发表于 2008-10-13 13:38 |只看该作者
char *p="asdf", *t="ASDF";
这样 p 和t指向的内存都是不可修改的

可以用char p[]="asdf", t[]="ASDF";

论坛徽章:
0
3 [报告]
发表于 2008-10-13 13:43 |只看该作者
char *p="asdf" 应该指向的栈空间,不可以重新赋值了

论坛徽章:
0
4 [报告]
发表于 2008-10-13 13:43 |只看该作者
谢谢
我是想解决这个问题是一个字符串排序问题

#include "stdio.h"
#include "string.h"
#define N 5

void sort(char *x[], int n)
{
  int i,j;
  char t[5];

  for(i=0;i<n-1;i++)
  {
    for(j=n-1;j>i;j--)
     {



        if(strcmp(*(x+i),*(x+j)) < 0)
         {

           strcpy(t,*(x+i));     这里的交换我应该怎么做?
           strcpy(*(x+i),*(x+j));
           strcpy(*(x+j),t);
         }

     }
  }

}

void main()
{
int i;
char *a[N]={"bc","ca","d","ea","ac"};
printf("S:\n");
for(i=0;i<5;i++)
  printf("%-4s",*(a+i));

printf("\n\n");


sort(a,N);
printf("D:\n");
for(i=0;i<5;i++)
  printf("%-4s",*(a+i));

printf("\n\n");

}

[ 本帖最后由 kevinmars520 于 2008-10-13 13:50 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-10-13 13:54 |只看该作者
原帖由 chl696 于 2008-10-13 13:43 发表
char *p="asdf" 应该指向的栈空间,不可以重新赋值了

字符字面常量实际上是在text段中,text段还包含进程的程序代码、常量、以及其它一些只读数据。

论坛徽章:
0
6 [报告]
发表于 2008-10-13 14:09 |只看该作者
char *tmp;
tmp = *(x+i);
*(x+i) = *(x+j);
*(x+j) = tmp;

即可。。。

论坛徽章:
0
7 [报告]
发表于 2008-10-13 14:11 |只看该作者

是我弄错了

QUOTE:
原帖由 chl696 于 2008-10-13 13:43 发表
char *p="asdf" 应该指向的栈空间,不可以重新赋值了
字符字面常量实际上是在text段中,text段还包含进程的程序代码、常量、以及其它一些只读数据。

论坛徽章:
0
8 [报告]
发表于 2008-10-13 14:13 |只看该作者
静态空间
基础,看书去

论坛徽章:
0
9 [报告]
发表于 2008-10-13 14:16 |只看该作者

?

局部变量是运行时创建的,数据段存储的全局变量,并非全局变量和静态变量,应该还是在栈里吧!

论坛徽章:
0
10 [报告]
发表于 2008-10-13 14:21 |只看该作者
指针的内容被视为常量了不可修改,所以报错 改为数组式的定义就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP