c语言什么时候使用数组,什么时候使用指针?

如题所述

任何时候都可以使用数组,使用指针。

定义时,通常只有字符指针,和字符数组指针直接定义。用来表示字符串或字符串数组。
其他一般定义数组。操作时用指针或数组。

其他指针,多半用在参数传递,数据结构内部(不确定需要内存的大小,或者链表,二叉树等链式结构)的时候。
还有一种是有些函数参数就是指针,这时定义一个指针,来操作传进来的指针参数比较好。

指针作为参数,有一下几种用法,

1)当作数组用,用来获取或设置数组元素。
2)把一个比较长的数据结构传入函数,只需要一个指针就够了。
3)传入变量的地址,用来读取或修改变量的值,主要是为了修改用。

直接定义一个不指向任何对象的指针,并且也从不给他赋值,没什么意义;

指针要么指向数组,要么指向变量,要么动态申请内存。
NULL指针,只是一个方便的指针,表示不指向任何对象。

真正有用的还是指向具体对象的指针。
如果定义了一个指针,使用时要让他指向一个具体对象,当需要他不指向什么对象的时候,给他赋值为NULL;
PS:
C语言,数组名只是一个指针常量而已,离开定义可见处,数组大小的信息就不存在了。
只有定义完全可见的地方,才可以获得数组的大小。
数组作为函数的参数,和外部引用声明都不能获得数组的大小。
参数只能传递指针,参数的大小只是指针的大小;
只能看到声明的地方,获取数组大小的努力,只能换来错误。

void fun1(int a[10]) //<==> void fun1(int a[]) <==>void fun1(int *a)
{
}
void fun2(int [10][10])// <==>void fun2(int a[][10])<==> void fun2(int (*a)[10])
{
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-21
这是不可能的,因为事先并不知道数组的大小,就不能分配内存,所以才有了动态内存分配。也就是malloc()等一系列函数还有c++特有的new运算符,当然,所谓的可变长数组只是在编译器内部耍了这些小把戏,也就是下面的网友说的c99标准中的用法。
第2个回答  2013-04-17
如果你想静态定义的时候你可以使用数组,动态定义的话可以使用指针,可以通过关键字new来给指针分配内存空间,例如,
char arr[10] 你无论用不用得完这数组,这空间都会被占用
但是如果你定义 char *arr;
然后再根据你要存的数据的大少分配内存,就省空间咯!
第3个回答  2013-04-17
最讨厌学院派的概念什么的东西了,我不敢吹,怕人骂,但我可以诚心告诉您,数组和指针都是访问内存操作而已,只不过写法不同,根据方便阅读和容易理解的程度来选择
第4个回答  2013-04-17
数组可以定义多个常量,运用比较方便,第一步通常是数组的初始化,就是给数组赋值。指针有两个运用,第一个是调用函数,第二个是做函数的参数。
相似回答