C语言的小门道(2)

发表在    27studio 12-24 13:49:11

1 3153 16

C语言的小门道(2)


偶哈哈!我127又回来了!

今天呢,先给大家讲下昨天的作业:::

(1)、

程序局部变量定义不在函数头部,故改为:

#include

main(){

int c,n;

c=1+2;

n=c;

}

(2)、

C++的单行注释是(//)。

好了,现在次要的作业都讲完了(也没多少),现在重点讲下第三题:

4d9843cdc1d9da01dbbf565dd6b427f6


指针与数组:


来看一段程序:

#include

mian()

{

int *p,a;

p=&a;

p[3]=a;

}

来,请问,在这个程序中,难道说整型指针变量p写成“p[3]”之后p就成数组了?

当然不可能。在这个程序中,"p[3]"只是“(*p+3)”的缩写。

所以说,如果下面的程序:

#include

main()

{

int c,a[5],*p;

p=a;

a[3]=1;

printf("%d",a[3]);

}

和把"printf("%d",(*(p+3)))"的效果是一样的(笑)。哦对了,这一段第一次提到的程序不要运行哦,会出问题的(不过可以过编译)。

嗯那好,还有人记得数组的定义吗?

其实索特127也不记得了,回家翻书吧。。。。

根据上面的理论,是不是"a[3]=1"也可以写成"(*a+3)=1"了呢?

答案是可以的。因为数组名是相当于数组的首地址,也相当于一个指针。。。

嗯,就是这样。


return和函数定义?


return的用处是返回到调用函数(也可以有返回值),那么如果有以下程序:

#include

void main()

{

int a=3,b=1,c;

c=a+b;

return c;

}


无标题


会编译成功吗?

不会的,因为在先前已经定义main函数为无返回值类型,你再想返回c的值,就错误了(或许编译器也给整蒙了:“这人怎么就喜欢自我矛盾,不要返回值,还要让我返回c的值。”).(不过在gcc里,好像只有一个警告。这可能不会达到原本的目的。最好能避免这种写法。。。)


shifa


如果你在上面的程序想用return,就只能写:

return;

嗯,明白了?

那么大家知道在返回调用函数后返回到哪吗?

事实上会返回到你的操作系统,或者终端,命令提示符。

那么没有return可以吗?

也是可以的,可能因为c语法比较宽松,所以在执行到函数末尾时,会自动执行无参数的return。

作业:

(1)、

改程序:

#include

void c(void)

{

printf("hello!");

return 0;

}

main()

{

c();

}

(2)、

判断:

下面程序可以编译通过吗?

#include<stdio.h>

main()

{

char name[20];

printf("what is your name:");

gets(name);

printf("your name is %s",name);

}

(3)、

思考题:

C语言的逻辑值?


登录或注册后发布评论