黑马程序员:c语言--指针


----------- android培训java培训、java学习型技术博客、期待与您交流! ------------



概述:

1.     指针的作用:能够根据一个地址值,访问对应的存储空间。

2.     int *p     int的作用是表示 指针*p所访问的地址只能存储整型变量,如果变量类型变为double 则访问的的地址只能储存双精度浮点型变量

3. int *p    *p    这两个*的含义是不一样的,前一个*的含义是定义的这个变量是代表一个指针,后面的*是访问P指向存储空间。

 

指针使用注意

1.     int *p 只能指向int 类型的数据

2.     int *Pp = 200 这种写法不对,因为指针变量只能存储地址

3.     int *p printf”%d\n”, *p;    指针变量没有经过初始化之前,不要拿来间接访问其他存储空间。

4.      64位编译器下,任何一种类型的指针都是占8个字节的存储空间 


 变量类型

1.局部变量:在函数(代码块)内部定义的变量

1>作用域:从定义变量的那一行开始,一直到代码块结束

2>生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收

3>没有固定的初始值

 

2.全局变量:在函数外面定义的变量

1>作用域:从定义变量的那一行开始,一直到文件结尾

2>生命周期:程序一启动就会分配内存,程序退出时才会被销毁

3>默认的初始值就是0

 

 结构体

1.     构造类型:由多个基本数据类型组成

2.      数组:只能由多个相同类型的数据构成

结构体:可以由多个不同类型的数据构成

3.     定义结构体变量的3种方式

1>  先定义类型,再定义变量(分开定义)

struct student

{

         int age;

};

struct student stu;

 

2>  定义类型的同时定义变量

struct student

{

         int age;

}stu;

struct student stu2;

 

3>  定义类型的同时定义变量(省略了类型名称)

struct

{

         int age;

}stu;

 

 

  结构体作用范围

1.结构体类型也有作用域,从定义类型的那一行开始,直到代码块结束


结构体指针

 1.     指向结构体的指针的定义

struct student *p;

 2.     利用指针访问结构体的成员

1>   *p成员名称

2>   p->成员名称

  


数据类型总结:

一、      基本数据类型

1.     int

1>  long int int : 8个字节 %ld

2>  shot int shot: 2个字节 %d

3>  unsigned intunsigned: 4个字节 %zd

4>  signed intsignedint: 4 个字节 %i %d

     

2.     float\double

1>  float: 4个字节 %f

2>  double: 8个字节 %f

 

3.     char

1>  1个字节  %c  %d

2>  char 类型保存在内存中的是它的ASCII ‘A’-à65

 

二、      构造类型

1.     数组

1>  只能由同一种类型的数据组成

2>  定义:数据类型  数据名 [元素个数]

 

2.     结构体

1>  可以由不同类型的数据组成

 

三、      指针类型

1.         变量的定义

int *p

 

3.     间接操作变量的值

int a = 10;

p = &a;

*p =20;

 

四、      枚举类型

1.     使用场合:当一个变量只允许有几个固定取值时

                                                          

预处理指令:

1.     所有的预处理指令都是以#开头

2.     预处理指令分3

1>  宏定义

2>  条件编译

3>  文件包含

 

3.     预处理指令在代码翻译成01之前执行

4.     预处理的位置是可以随便写的

5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结束

#define COUNT

 

5.     #undef  COUNT :从这行开始,COUNT这个宏就失效

6.     宏名一般用大写或者以k开头,为了和变量名区分。规范书写

#define kCount 4

 

7.     带参数的宏命令:

1>  参数的正确写法:#define pingfang(a) ((a)*(a))

宏与函数相比,运行的效率更高

 

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

详情请查看:http://edu.csdn.net/heima



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值