重赏之下,必有勇妇

harbincampus 2007-04-28 10:09:33
哪位老兄能全面概括char array[] 与 char *array 的区别.
多谢帮忙.
...全文
400 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cangwu_lee 2007-04-29
  • 打赏
  • 举报
回复
Ding 标记
jixingzhong 2007-04-29
  • 打赏
  • 举报
回复
另外一个需要注意的特性:
sizeof(数组) 可以得到数组的大小,所以, sizeof(数组)/sizeof(元素) 可以计算获得数组的元素数目。

但是 sizeof(指针)只能获得指针的大小,和指针指向的空间大小没有任何的关系!
jixingzhong 2007-04-29
  • 打赏
  • 举报
回复
char array[??] 定义一个 array数组,定义时刻分配数组空间,你可以给数组填充内容,比如填充一个字符串: strcpy(array, "???");

char *array 定义一个 char 指针, 定义时刻分配指针本身的空间,但是指针指向的数据空间等待分配: array=(char *)malloc(sizeof(char)*?); 然后就可以进行字符串操作了:strcpy(array, "???");
  • 打赏
  • 举报
回复
up
fengdream 2007-04-29
  • 打赏
  • 举报
回复
分析的很透彻,mark
wangzhangyong411 2007-04-29
  • 打赏
  • 举报
回复
老问题了,以前的帖子很多的

楼上已经给你说得很清楚了

主要区别反正就是一个是给分配内存的,而且把内容直接放到这块内存里

另一个是给一个指针,内存要自己分配,如果是“adsfas”,这些固定的字符串,在内存中已经

存放好的,不用你分配内存的 指针指过去就好了

如果自己要存放一些东西,以后还要改这些东西的话 就要自己动态分配 malloc下就可以

up

jixingzhong 2007-04-29
  • 打赏
  • 举报
回复
char* 和 char[]的区别:
http://bbs.gameres.com/showthread.asp?threadid=79640
http://topic.csdn.net/t/20020226/12/543043.html

主要考虑两点:
1 内存分配上的区别, 指针不分配指向数据的空间,数组则分配所有元素的内存空间;
2 数组名可以认为是一种带有 const 属性的指针(就是不能修改的指针),比如
char a[6];
strcpy(a, "Hello");
puts(a);
putchar(*a); //输出 H ,即 a数组的第一个元素
3 意义以及行为:
char *p="Hello"; //这是定义一个指针,并把在常量区中的一个字符串 "Hello"的首地址赋值给这个指针,所以,是无法修改数据内容的(*p='h'; 错!),但是你可以修改指针,如p=arr;
char arr[]="Hello"; //定义一个数组,然后把常量区字符串 "Hello"拷贝到这个数组中来,所以,操作和常量"Hello"没有关联,你可以赋值:arr[0]='h',OK, 但是不能修改 arr
spofmy 2007-04-29
  • 打赏
  • 举报
回复
瞌睡虫都说了
sinovoice 2007-04-29
  • 打赏
  • 举报
回复
学习下
ka_ng 2007-04-29
  • 打赏
  • 举报
回复
当勇妇才40分?这个还算重赏???
bargio_susie 2007-04-28
  • 打赏
  • 举报
回复
1.分配内存不同.前者在栈上分配,后者在堆上分配
2.数组名不是变量,指针是变量.
还有什么的楼下来补充了
bargio_susie 2007-04-28
  • 打赏
  • 举报
回复
必有勇妇 ..........汗

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧