C语言复习(一)

2019-07-08  本文已影响0人  Elijah_cs

最近想把自己的基础打牢固,故想从C复习先,然后C++,去实现一些数据结构和算法。

变量

变量是程序可操作的存储区的的名称,C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表

type var_list
int i=0;   带初始化的定义har c;
float num;
int j;    //不带初始化的定义
//不带初始化的定义带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

变量声明向编译器保证变量以指定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
变量的声明有两种情况:

extern int i; //声明,不是定义
int i; //声明,也是定义 extern后续再研究

常量

#include<stdio.h>
#define WIDTH 5;
int main()
{
      const int LENGTH = 10;
      return 0;
}

C储存类

C储存定义了程序的变量和函数作用的范围和生命周期,有四种类型:auto,register,static,extrn.

int count;
auto int count;

register int count;

#include <stdio.h>
/* 函数声明 */
void func1(void);
static int count=10;        /* 全局变量 - static 是默认的 */
int main()
{
  while (count--) {
      func1();
  }
  return 0;
}
void func1(void)
{
\/** 'thingy' 是 'func1' 的局部变量 - 只初始化一次 每次调用函数 'func1' 'thingy' 值不会被重置。*/                
  static int thingy=5;
  thingy++;
  printf(" thingy 为 %d , count 为 %d\n", thingy, count);
}
result:
thingy 为 6 , count 为 9
 thingy 为 7 , count 为 8
>thingy 为 8 , count 为 7
 thingy 为 9 , count 为 6
 >thingy 为 10 , count 为 5
 thingy 为 11 , count 为 4
 thingy 为 12 , count 为 3
 thingy 为 13 , count 为 2
 thingy 为 14 , count 为 1
 thingy 为 15 , count 为 0

函数参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。当调用函数时,有两种向函数传递参数的方法:

作用域规则

任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量:

  1. 局部变量
    在某个函数或块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。
  2. 全局变量
    全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。全局变量可以被任何函数访问。也就是说,全局变量在声明后整个程序中都是可用的。
    在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用
  3. 形式参数
    函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。下面是一个实例:
#include <stdio.h>
/* 全局变量声明 */
int a = 20;
int main ()
{
  /* 在主函数中的局部变量声明 */
  int a = 10;
  int b = 20;
  int c = 0;
  int sum(int, int);
  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);
  return 0;
}
/* 添加两个整数的函数 */
int sum(int a, int b)
{
    printf ("value of a in sum() = %d\n",  a);
    printf ("value of b in sum() = %d\n",  b);
    return a + b;
}
result:
value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

数组

void myFuncton(int *para){ ....} //传入的参数为一个指针
void myFunction(int para[]) //传入的参数为长度不确定的数组
void myFunction(int para[3]) //传入的参数为长度确定的数组

int  *myFunction()
{
static int a[2] = {0}  //
return a;
}
int main()
{
int  *p ;
p = myFunction()
print("%d",*(p+0))
return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读