UC 2

一  指针
内存地址是线性的,线性地址
地址就相当于是房间的门牌号
每个地址对应一个字节的空间。数据存放在地址标识的空间里。
变量和常量
int var_a;
char var_b;
数据类型
什么是数据类型?
怎么去访问一个变量的内容?
每个变量都有自己的名字和名字对应的变量的地址,在这个地址空间里有变量的值。

首先通过变量的名字找到变量的地址,然后访问变量的内容(变量的值),访问变量的内容的时候,要遵循一定的访问方式。数据类型决定了你怎么访问这块内存空间。
数据类型就是内存的访问方式。

指针是类型,不是地址。
int  char  *  double  float  short。。。
int var_a;
char var_b;
int *p;
举例验证指针的概念
代码参见point_base.c

大端和小端
高字节放在低地址,称为大端
高字节放在高地址,称为小端

编写代码验证计算机采用的是大端还是小端
代码参见big_little.c

数组:
int arr[3];  
int *p=arr;  p+1;

char arr[3];
举例验证
代码参加point_arr.c

二维数组的内存空间分布
int arr[2][3]={{1,2,3},{4,5,6}};

举例验证二维数组和指针的使用
point_two_arr.c

指针数组(指针类型的数组)
int *arr[3];

数组指针
int (*arr)[3];

指针和函数
int *func(int x,int y);
int (*func)(int x,int y);
func是指针类型的变量
int(int x,int y);是访问方式

int add(int,int);
int sub(int,int);

func=add;
func=sub;
举例验证  函数指针
代码参见tmath文件夹
int (*t[4])(int,int);
指针小结:
int p;
int *p;
int **p;
int *p[3];
int (*p)[3];
int *func(int,int);
int (*func)(int,int);
int (*func[4])(int,int);

(1)  常量和变量
(2)  通过变量的名字找到变量的地址,然后根据变量的类型访问变量的空间内容
(3)  运算符的优先级及其结合性。

二  类型别名的定义
typedef
typedef int COUNT;
COUNT c;
使用typedef的三歩曲
第一步:
int count_t; count_t是整型类型的变量
第二步:
typedef int count_t;  count_t 是int类型的别名

第三步:使用类型的别名声明和定义变量
count_t  c;  变量c的本质类型是int。

struct stu{
    int num;
    char name[12];
};
typedef struct stu  stu_t;
stu_t st;  st是struct stu类型的一个变量
typedef stu_t  *stu_p;
stu_p 是什么类型的别名?
stu_p是指针类型的别名。访问指针变量里的内容的内容的时候,遵循stu_t类型的访问方式。
stu_p  st;======stu_t *st;
stu_p st1,st2,st3;=====stu_t *st1,*st2,*st3;
stu_p *sp;

int(*func_t)(int,int);
typedef int(*func_t)(int,int);
func_t  tm;

int arr_t[3];
typedef int arr_t[3];
arr_t  a={1,2,3};
arr_t b[2];

int arr[2][3];
举例验证  
typedef_arr.c

三  环境变量
四  静态库的制作

小结:
一、指针
二、使用typedef为类型定义别名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值