| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 731 人关注过本帖
标题:请问这里的a[]什么意思?
只看楼主 加入收藏
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 10楼 小鱼儿c
已经在里面下了很都东西了,学习中!!

Stay hungry , Stay foolish!
2012-04-06 19:57
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 9楼 清微御宇
刚打代码不久的人可能不会注意这些代码规范问题,如果一开始就注意这个问题,你会少走很多的弯路。
比如说,你如何打函数那个括号?多半是先打(,然后写括号里的内容,再打)号吧?
如果你能改成这样的习惯,打完函数名后,直接先打()一对括号,然后移动光标到括号里写内容。
这个看似简单的习惯,在以后你写复杂表达式的时候特别有用,不会出现遗漏括号的编译问题。

程序代码:
#include <stdio.h>
//#include <stdlib.h>
void man(int a[]);

int main()
{
    int a[4], i; //多个变量之间空一格。这样看起来会更好,
                 //变量和程序代码行空一行分开。
    for( i = 0; i < 4; i++ ) //空一下看着会更好。for语句最好打上大括号。以分清循环体外还是循环体内
    {
          scanf("%d",a + i);
    }
    man(a);

     for( i = 0; i < 4; i++)
         printf("%-4d", *(a + i) ); //既使你不打括号也要用TAB健错开一下。
}

void man(int a[])//这里的啊a[]代表什么?为何可以接受实参传过来的地址?主要就是这个问题!!
{
     int temp;

     if(a[1] > a[2])
     {
         temp = a[1];
         a[1] = a[2];
         a[2] = temp;//居然可以使main函数中的实参改变是不是a[1]被处理成*(a+1)的结果?
     }

}
这样看着是不是很舒服呢?打代码如果你能把它看作一件艺术品,就不会感到枯燥了。


[ 本帖最后由 hellovfp 于 2012-4-7 10:57 编辑 ]

我们都在路上。。。。。
2012-04-07 10:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
12楼的建议很好,类似的“习惯法”我以前也说过,没几个入脑的。

授人以渔,不授人以鱼。
2012-04-07 13:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
像清微御宇这样,还是有点探究精神的,不妨多说几句。

你看我写的代码,有如下这样的:
程序代码:
    while (_getwch() != K_ENTER)
    {
        ;
    }

这是一个空循环,但为什么我要写成这样?自己思考一下。其实类似这种东西,所谓看别人的代码学习,是你有没有意识的问题,有的人看到,觉得应该去探究,有的人则嗤之以鼻,觉得没有写成一行省空间(效率狂以为代码省空间即是效率)来得高明。所以不要说别人不肯教什么的,写了出来,你自己不问,难道要人强灌给你?何况有的人你灌他也不领情。

授人以渔,不授人以鱼。
2012-04-07 13:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
void man(int a[])//这里的啊a[]代表什么?为何可以接受实参传过来的地址?主要就是这个问题!!

这个函数参数声明,是表明形参是一个数组,数组名是a。现在开始留意了:编译器的处理规则,是把数组名视为入口常指针。也就是说,在函数里面,a虽然是指针,但a是不能移动的,你无法写出a++这样的代码(不信你可以试试,编译时就出error,不是警告级别的,而是错误级别的)。而如果你写void man(int *a)这样的,那么形参就仅仅是一个指针,而不是数组,这是一个自由指针,是可以移动的。

数组名虽然可被视为指针,但却不是那种普通的指针,必须要注意分辨。当你看到,或写出这样的代码时,应该意识到它的性质及行为,那是编写代码时的依据。明白这些原理,才能知道根据需要代码应该怎样写。

授人以渔,不授人以鱼。
2012-04-07 14:30
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 12楼 hellovfp
认真看了两遍,以后会多多注意的“打代码如果你能把它看作一件艺术品,就不会感到枯燥了。”呵呵,意境呀,一定要多多学习!thanks!

Stay hungry , Stay foolish!
2012-04-07 21:53
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 15楼 TonyDeng
呵呵,个人感觉版版无所不能!书上的还没有您说的详细清晰!谢谢您的精彩回复!

Stay hungry , Stay foolish!
2012-04-07 22:02
玉面狂龙
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:156
注 册:2012-2-23
收藏
得分:0 
在数组中,数组长度可以不用定义,无论它里面是几不重要,不影响最后结果,
它接受一个地址为实参,a代表数组a[4]的首地址,这是数组的运用,我的理解
就这么多
2012-04-07 23:54
MRPutin
Rank: 2
等 级:论坛游民
帖 子:21
专家分:43
注 册:2012-3-28
收藏
得分:0 
man函数的if下的语句根本不会被执行

*          坚持与积累成就C语言王者之路      *
2012-04-08 01:29
快速回复:请问这里的a[]什么意思?
数据加载中...
 
   



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

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