重赏之下,必有勇妇,该怎么处理
重赏之下,必有勇妇
哪位老兄能全面概括char array[] 与 char *array 的区别.
多谢帮忙.
------解决方案--------------------
必有勇妇 ..........汗
------解决方案--------------------
1.分配内存不同.前者在栈上分配,后者在堆上分配
2.数组名不是变量,指针是变量.
还有什么的楼下来补充了
------解决方案--------------------
char array[??] 定义一个 array数组,定义时刻分配数组空间,你可以给数组填充内容,比如填充一个字符串: strcpy(array, "??? ");
char *array 定义一个 char 指针, 定义时刻分配指针本身的空间,但是指针指向的数据空间等待分配: array=(char *)malloc(sizeof(char)*?); 然后就可以进行字符串操作了:strcpy(array, "??? ");
------解决方案--------------------
另外一个需要注意的特性:
sizeof(数组) 可以得到数组的大小,所以, sizeof(数组)/sizeof(元素) 可以计算获得数组的元素数目。
但是 sizeof(指针)只能获得指针的大小,和指针指向的空间大小没有任何的关系!
------解决方案--------------------
Ding 标记
------解决方案--------------------
char* 和 char[]的区别:
http://bbs.gameres.com/showthread.asp?threadid=79640
http://topic.****.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
------解决方案--------------------
老问题了,以前的帖子很多的
楼上已经给你说得很清楚了
主要区别反正就是一个是给分配内存的,而且把内容直接放到这块内存里
另一个是给一个指针,内存要自己分配,如果是“adsfas”,这些固定的字符串,在内存中已经
存放好的,不用你分配内存的 指针指过去就好了
如果自己要存放一些东西,以后还要改这些东西的话 就要自己动态分配 malloc下就可以
up
------解决方案--------------------
分析的很透彻,mark
------解决方案--------------------
up
------解决方案--------------------
学习下
------解决方案--------------------
瞌睡虫都说了
哪位老兄能全面概括char array[] 与 char *array 的区别.
多谢帮忙.
------解决方案--------------------
必有勇妇 ..........汗
------解决方案--------------------
1.分配内存不同.前者在栈上分配,后者在堆上分配
2.数组名不是变量,指针是变量.
还有什么的楼下来补充了
------解决方案--------------------
char array[??] 定义一个 array数组,定义时刻分配数组空间,你可以给数组填充内容,比如填充一个字符串: strcpy(array, "??? ");
char *array 定义一个 char 指针, 定义时刻分配指针本身的空间,但是指针指向的数据空间等待分配: array=(char *)malloc(sizeof(char)*?); 然后就可以进行字符串操作了:strcpy(array, "??? ");
------解决方案--------------------
另外一个需要注意的特性:
sizeof(数组) 可以得到数组的大小,所以, sizeof(数组)/sizeof(元素) 可以计算获得数组的元素数目。
但是 sizeof(指针)只能获得指针的大小,和指针指向的空间大小没有任何的关系!
------解决方案--------------------
Ding 标记
------解决方案--------------------
char* 和 char[]的区别:
http://bbs.gameres.com/showthread.asp?threadid=79640
http://topic.****.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
------解决方案--------------------
老问题了,以前的帖子很多的
楼上已经给你说得很清楚了
主要区别反正就是一个是给分配内存的,而且把内容直接放到这块内存里
另一个是给一个指针,内存要自己分配,如果是“adsfas”,这些固定的字符串,在内存中已经
存放好的,不用你分配内存的 指针指过去就好了
如果自己要存放一些东西,以后还要改这些东西的话 就要自己动态分配 malloc下就可以
up
------解决方案--------------------
分析的很透彻,mark
------解决方案--------------------
up
------解决方案--------------------
学习下
------解决方案--------------------
瞌睡虫都说了