char ptr[]="jiky";
有什么区别!我一直认为没有区别!
----------------解决方案--------------------------------------------------------
#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编辑过]
----------------解决方案--------------------------------------------------------
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是存储在静态存储区的啊!但是我可以修改他啊
----------------解决方案--------------------------------------------------------