c初级相关总结

基本数据类型

关键字:系统预先定义好的,有特殊含义的,并且都是小写不能重新定义

一共有32个:

数据类型:char、short、int、long、float、double、enum、union、struct、void

控制语句:if、else、for、do、while、switch、case、default、break、continue、goto

存储类型:auto、static、extern、register

const:只读

return:返回函数

signed:有符号数

unsigned:无符号数

sizeof:计算所占内存空间的大小:单位:字节

typedef:给一个已有的数据类型起别名

volatile: 防止编译器优化

标识符:程序员自己定义的,一般用来定义变量名,函数名,类型名

命名规范:(见名知意)

由数字、字母、下划线组成

第一个不能为数字

不能和关键字重名

32os:分别占据多少个字节:

字符型:char(1字节)

整型:int(4字节)   short(2字节)   long(4字节)

浮点型:float(4字节)   double(8字节)

64os:

字符型:char(1字节)

整型:int(4字节)   short(2字节)   long(8字节)

浮点型:float(4字节)   double(8字节)

存储类型存储类型:

auto、static、extern、registerauto:修饰局部变量,修饰的变量存储在栈区extern:修饰全局变量,修饰的变量存储在静态区static:既可以修饰局部变量,也可以修饰全局变量,修饰的变量存储在静态区register:修饰局部变量,存储在寄存器中;

修饰局部变量时,延长局部变量的生命周期如果局部变量没有初始化,其值为0;如果初始化了,则只能初始化一次;(延长了生命周期,但是并没有延长作用域!!

隐式类型转换

 

横向箭头:

不管有没有进行混合运算,都会进行转换;

纵向箭头:

只有进行了混合运算,才会进行转换;

指针

存储类型 数据类型 * 指针变量名

           Int  *  p;

定义了一个指针变量p,p用来保存(谁的(int)地址)地址

数据类型:指针指向的数据类型(指针保存的是什么数据类型的变量的地址)

指针的数据类型:int *

 注意:&和*互逆

指针的赋值相当于改变指针的指向

(指针赋值时要注意 指针指向的数据类型必须相同)

指向零号地址的指针(值为0的指针,就认为该指针没有指向)

注意:零号地址禁止操作

野指针:不知道指向哪里的指针

局部变量,没有初始化,随机值

局部指针变量,如果没有初始化,就是野指针

二级指针

存储类型  数据类型  *指针变量名;

           Int * *pp;

数据类型:指针指向的数据类型;(二级指针指向的数据类型:一级指针的数据类型)

(int  *)

二级指针的数据类型:int **;

总结:

  1. 指针的数据类型,去掉变量名就是数据类型

Int *p;   // int *

Int **p;  //int **

Int ***p; // int ***

  1. 指针指向的数据类型,去掉的一个*和变量名,剩下的就是指针指向的数据类型

Int *p; // p指向的数据类型为int

Char *h;//h指向的数据类型char

Int **q;//q指向的数据类型为int *

Char **s;//s指向的数据类型为 char *

Int ***t;//t指向的数据类型 int **

3、指针所能访问到的内存空间的大小,由指向的数据类型决定

Char a = ‘b’;

Char *p = &a;//p能访问到的内存空间1字节  

int a;

Int *q = &a;//q能访问到的内内存空间的大小:4字节

Int **s ;

S = &q;//s所能访问到的内存空间的大小:4字节

4、

Int **p;

Int ** *q;

q = &p;

 指针和二维数组的关系

 

&a、a、&a[0]、a[0]、&a[0][0]的值是一样的,但是表达的含义不一样

a:Int (*) [3] :他是一个指向一维数组的指针  a[0]:指向int类型元素的指针

为什么说a不是int**类型?

如果a是int**类型,那么他指向的数据类型应该是int * ,那么a+1,应该移动移动4字节,但是a+1,移动了12字节,移动了一个数组,因此a一定不是int**类型

a指向a[0]、a[0]指向a[0][0]

数组指针  指向数组的指针 保存数组的地址

存储类型 数据类型 (*变量名)[元素的个数]

           Int  (*p) [3]

定义了一个指向数组的指针p,指向的这个数组:有3个int类型的元素

存储类型:auto、static、extern、register

数组类型:指针指向的数组中的元素数据类型

P:数组指针的数据类型:int(*)[3];

P:指向的数据类型int [3]

P+1:移动了sizeof(指向的数据类型) sizeof(int[3])

数组指针和二维数组的关系

 

指针数组

元素为指针的数组

定义

存储类型  数据类型 * 变量名[元素的个数];

Int * arr[3];

//相当于定义了一个数组,这个数组种有三个元素,每一个元素都是int *类型

数组中元素的数据类型:int *

指针数组和二维数组的关系

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值