| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:[原创]求助高手啊
只看楼主 加入收藏
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
 问题点数:0 回复次数:5 
[原创]求助高手啊
最近看拉数组和指针就迷茫拉有几个问题请教一下:
1数组和指针最根本区别在那里?
2什么时候用的是数组,什么时候用的又是指针呢?
3在调用函数的时候,传递的是函数植还是函数的内存地址?
2005-02-22 06:25
tangzhongliu
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-2-10
收藏
得分:0 
对阿,这些都是我们新手的盲点阿,请各位高手指教一下啊!

坚持,坚持,再坚持。。。
2005-02-23 11:54
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
晕,惭愧啊,我只知道什么时候应该用数组,什么时候应该用指针。
可是让我真的去讲为什么,我还真的是讲不出来啊。

第3个问题我会。
函数调用的时候传递的可以是值,也可以是内存地址

淘宝杜琨
2005-02-23 13:27
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用mengge在2005-2-22 6:25:55的发言: 最近看拉数组和指针就迷茫拉有几个问题请教一下: 1数组和指针最根本区别在那里? 2什么时候用的是数组,什么时候用的又是指针呢? 3在调用函数的时候,传递的是函数植还是函数的内存地址?
1。数组是一段内存空间,而指针只是一个变量。 2。指针和数组不是一会事,指针代替不了数组,所以谈不上“什么时候用的是数组,什么时候用的又是指针” 3。问题模糊,看不懂,如果你问的是: 比如 int fun() { ..} 调用fun时,fun就是一个地址,从这个地址开始放的是fun()函数代码

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-02-23 13:42
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
得分:0 
谢谢版主
我今天对1,2两个问题有拉新的理解;对于低个问题我还是不理解
我还是用例子来说明吧:
A.
biger(int *p1,int *p2)
{
 int t
 t=*p1;
 *p1=*p2;
 *p2=t;
}
main()
{int a,b;
 int *pointer_1,*pointer_2;
 scanf("%d,%d",&a,&b);
 pointer_1=&a;
 pointer_2=&b;
 if(a<b) biger(pointer_1,pointer_2);
 printf("\n%d,%d\n",a,b);
 getch();
 }
B
biger(int *p1,int *p2)
{
 int *t
 *t=*p1;
 *p1=*p2;
 *p2=*t;
}
main()
{int a,b;
 int *pointer_1,*pointer_2;
 scanf("%d,%d",&a,&b);
 pointer_1=&a;
 pointer_2=&b;
 if(a<b) biger(pointer_1,pointer_2);
 printf("\n%d,%d\n",a,b);
 getch();
 }
B程序可以运行但是编译器提示有错
A却没有这个是什么原因啊
2005-02-24 00:38
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

首先 int *t 应该为int *t; 你少了个; 其次,*在作为指针运算符的时候意思表示的是指针t所指向内存地址的值

*t=*p1;表面上看来没错。但是请问你在定义*t的时候知道指针t原来指向的是那里吗?这个问题你是不可能知道的。根据编译器的不同t的值也可能不同,就是说t可能指向内存中的任何一个地方。

当然,如果t很幸运的指向了一块空内存,则这个程序没有什么问题。但是,如果t指向的内存地址是别的变量的地址、甚至可能是系统地址。那么*t=*p1;这个运算很可能会导致数据错误,甚至系统当机。


淘宝杜琨
2005-02-24 05:34
快速回复:[原创]求助高手啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054288 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved