c语言 对变量的定义

用变量a给出下面的定义:

①一个整型数;                                                                                                               int a;

②一个指向整型数的指针;                                                                                                 int * a;

③一个指向指针的指针,它指向的指针是一个整型数;                                                           int * * a;

④一个有10个整型数的数组;                                                                                             int a[10];

⑤一个有10个整型数的数组,该指针是指向一个整型数的;                                                    int * a[10];

⑥一个指向有10个数组的指针;                                                                                           int (*a)[10];

⑦一个指向函数的指针,该函数有个整型参数并返回一个整数型;                                           int(*a)(int);

⑧一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;  int (*a[10])(int);


定义变量或解析定义时用到的左右法则:

——》int (*a[10])(int)

——》首先找到变量名a,先往右看遇到了【】,说明a首先是一个数组,【】里面是个10,表明数组中有10个元素;

——》再往右继续看,遇到了),这个时候掉转方向往左看,遇到*,表明数组里面保存的变量是指针变量

——》继续往左看遇到了(,这个时候又要调转方向,往右看,遇到了()

——》说明指针变量指向的是函数,()里面的int,表明函数的形参只有一个并且是整型参数,又掉转方向往左看,遇到int,说明函数的返回值是int型的。

int add (int a,int b);

函数的名字

函数的形参

函数的返回值

——》左右法则:首先找到变量名,然后往左看,每次遇到括号掉转方向,直到把定义解析完毕。

——》强调的是:

    1.遇到数组时,应该问自己:这个数组里有多少元素,元素又是什么类型的;

    2.遇到指针时,应该问自己:这个数组里有多少个元素,元素又是什么类型的;

    3.遇到函数的时候,应该问自己,函数的形参有没有,有的话有几个,每个参数又是什么类型的,函数的返回值是什么

左值右值:

    int a =12

    解析:程序里定义了一个int型变量,变量名为a,并且把变量初始化化为12;

              编译器编译到这行的时候,会在内存里面分配一块空间——》这空间有多大呢?——》int字节的大小

              这个空间的名字叫“a”,并且把12这个数放到空间里。

初始化和赋值

在定义变量的时候就给变量赋值,叫初始化。            int a = 8;

在定义变量之后,再对变量进行操作,比如改变变量的值,叫赋值

int a;

a = 8;

变量的作用范围:

全局变量:作用范围是整个.c文件

局部变量:作用范围是{  }所在的代码块

当全局变量和局部变量有重合的时候,用近的那个。

你可能感兴趣的:(c语言 对变量的定义)