C语言指针变量可以当做数组吗?

比如说定义int*w然后下边就可以用作w[i]这么对吗?对的话在什么情况下可以这么使用?... 比如说定义int *w
然后下边就可以用作w[i]
这么对吗?
对的话在什么情况下可以这么使用?
展开
 我来答
White_MouseYBZ
2013-04-09 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6340万
展开全部
比如说定义int *w
然后下边就可以用作w[i]
这么对吗?
对的话在什么情况下可以这么使用?

答:不可以,因为w这时还是野指针。只有这样
int *w,a[44];
w=a;
操作后才可以,操作w就与操作a一样了。而且,操作指针比直接操作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。
  你追问的那个红框框中的问题不是指针与数组名的问题,而是“形式参数”与“实际参数”的问题。写函数定义的()中的前面带类型说明符的变量名叫形式参数。形参与实参相比,最大的特点就是不用担心没有赋值或初始化就拿来引用,它们是留着调用时才用实参自动赋值的。而实参则不然,没有赋值时拿来做右值,就会被警告“引用了没有初始化的变量”,而且因为初值是随机的而结果一般都是错误的。
mr_shj
2015-07-07 · TA获得超过2679个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1357万
展开全部

C语言指针变量可以当做数组运用,在应用之前,应该先让指针指向一个数据块,可以是程序中的某个数组(这个就不说了),也可以指向一段新分配的内存空间;例如

#include <stdio.h>
#include <stdlib.h>
int main(){
int i,*p;
p=(int *)malloc(sizeof(int)*10); //分配10个整数的存储空间,p指针指向该空间
for(i=0;i<10;i++) 
p[i]=i; //象平常数组一样访问p指向的存储空间
for(i=0;i<10;i++)
printf("%d ",p[i]);
free(p);  //释放p指向的存储空间。 
}

如果指向新的内存空间时,特别是在子函数中,注意灵活处理要不要释放该存储空间。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
遁世千秋
2013-04-08
知道答主
回答量:36
采纳率:0%
帮助的人:24.4万
展开全部



可以的,你可以先定义一个变量m,给他赋值,然后就可以这样:int *w=new int[m];

由于m值可以改变多以这相当于定义了一个动态数组。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fd2d9a684
2013-04-08
知道答主
回答量:31
采纳率:0%
帮助的人:12.9万
展开全部
可以吧,指针是地址。int *w表示指向整形数据的指针;当其所指向的地址为某int型数组首地址时,如:int a[10];w=a;此时w可以如所想当数组用,但它跟数组还是有本质的区别,我们一般都将数组名作为常量指针来处理的。而w的指向是可变的,所以我们一般都不会将指针当数组用,因为不安全,当然也可以用const加以修饰,但不如直接用数组来的直观。指针操作数组一般是直接移动指针,也就是改变指向吧。
追问

下面是让我产生疑问的代码,如红线框所示,并没有将指针w指向某个int型数组首地址,却直接用作数组,这个怎么解释

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
903870967
2013-04-09 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:114万
展开全部
可以这么用。为w申请了内存空间或者让它等于另一个已有空间的指针。总之一句话,要有内存空间。

你调用这个函数的时候,是不是传的一个数组,或已申请空间的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式