当前位置: 代码迷 >> C语言 >> 一个关于字符串的问题!
  详细解决方案

一个关于字符串的问题!

热度:226   发布时间:2006-04-14 11:21:00.0
一个关于字符串的问题!
char * ptr ="jiky";
char ptr[]="jiky";
有什么区别!我一直认为没有区别!
搜索更多相关的解决方案: 字符串  ptr  

----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
char ptr[]="123.456";//这里用char *ptr="123.456"代替,会出现内存错误啊
char *ptmp=ptr;
char * pti="123";
int a=atoi(pti);
float b=atof(ptr);
long c =atol(pti);
printf("%d\n%f\n%ld\n",a,b,c);
itoa(a,ptmp,10);
printf("%s\n",ptmp);
return 0;
}
----------------解决方案--------------------------------------------------------
哪位大侠帮看看 编译环境VC++ 6.0
----------------解决方案--------------------------------------------------------

char ptr[] 是数组
char *ptr 这是定义了一个char型的指针
char *ptr[] 这是一个指针数组
指针的概念比较混乱...还是多看书....多上机调试

[此贴子已经被作者于2006-4-14 12:32:44编辑过]


----------------解决方案--------------------------------------------------------
以下是引用rellorsky在2006-4-14 11:21:00的发言:
char * ptr ="jiky";这是定义的一个指向字符串中'j'的指针
char ptr[]="jiky";这是定义的一个数组
有什么区别!我一直认为没有区别!


----------------解决方案--------------------------------------------------------
我知道char ptr[];是定义一个数组
char *ptr;定义一个指针;
我问的不是这个问题!

char *ptr="123.456";这种定义方式在写c程序中定义一个字符串使用很普遍啊!程序里经常这样用
也可以使用char ptr[]="123.456";
但是上边的程序换成char *ptr="123.456";为什么会出内存错误呢?
能解释一下吗??
原因在哪里?
----------------解决方案--------------------------------------------------------
char * ptr ="jiky"; 定义一个指针,该指针指向"jiky"字符串,"jiky"存储在静态存储区,其值不允许改变

char ptr[]="jiky"; 是隐含定义数组,其值允许改变


详见http://lehu.512j.com/1_nei4cun2.htm


----------------解决方案--------------------------------------------------------

支持```


----------------解决方案--------------------------------------------------------

明白了!多谢


----------------解决方案--------------------------------------------------------
但是还有一个问题!静态存储区的值不可以该吗??
static int i=10;
i=39;
这样好象没有错啊!
i是存储在静态存储区的啊!但是我可以修改他啊

----------------解决方案--------------------------------------------------------
  相关解决方案