C语言学习内容总结2017/11/4

来源:互联网 发布:js confirm 标题修改 编辑:程序博客网 时间:2024/06/05 00:47

1.运行在操作系统上的应用程序,如果想要操作实体就必须通过操作系统的接口函数(API函数)进行操作。

2.句柄可以找到内存,但它不能操作内存。因为它是无类型的,对内存的解释能力不够。

3.函数的调用和返回值:

函数调用也就是主调函数使用被调函数,函数调用的一般形式为:函数名({实际参数表})

对无参函数调用时则无实际参数表。

实际参数表中的参数可以是常数,变量或其他构造类型数据及表达式。

各实参之间用逗号分隔。

当在主调函数发生调用关系时 计算机会发生以下动作:

(1)首先计算机自右至左依次求解主调函数实参的值。

(2)系统给形参分配临时存储单元。

(3)然后再自左至右把实参的值传给形参。

(4)执行被调函数。

对函数返回值的说明:

(1)函数的值只能通过return语句返回主调函数。

    return语句的一般形式为:return 表达式;

    该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,

    但每次调用只能一个return语句被执行,因此只能返回一个函数值。

(2)函数值得类型和函数定义中函数的类型应保持一致。

(3)若函数值为整型,函数定义时可以省去类型说明。

(4)若被调函数中没有return语句,则函数带回的是一个不确定的值,没有实际意义。

    不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。

4.下面一段代码:

#include <stdio.h>
int *fun(int x)
{
static int a = x;
static int b = 10;
++a;
return &a;
}
void main()
{
for (int i = 10; i > 0; --i)
{
int *p = fun(i);
printf("%d ",*p);
}
printf("\n");
}

程序的运行结果:

11 12 13 14 15 16 17 18 19 20

而不是:

11 10 9 8 7 6 5 4 3 2

如果把fun函数中static int a=x;改为int a=x;则程序的运行结果为:11 10 9 8 7 6 5 4 3 2。为什么会这样呢?这是因为在fun函数中变量a被修饰为静态,而静态变量的初始化只初始化一次,当它第一次被调用时对它进行赋初值,静态变量的值是直接放在数据区的,不产生代码。

5.在计算中存取速度由快到慢的顺序为:寄存器==>CPU高速缓存==>内存==> 硬盘。

内存的主频和CPU的主频差异太大。

6.下面一段代码:

#include <stdio.h>
#include <string.h>
void main()
{
int ar[3][4] = {1,2,3,4,5,6,7};
int a=sizeof(ar);
int (*p)[4] = ar;
int b = *(*(p + 1) + 1);
}

b的值为6.

原创粉丝点击