变量的存储方式以及指针

二维字符型数组在传参的时候需要注意的是

int         SumArray(int a[ ][6] ,int row);//二维整型数组函数声明,注意传参方式

SumArray(a,row);        //调用

char printStr(char s[][10], int  row);        //二维字符型数组声明,需要传递长度

printStr(s,row);//函数调用

与一维字符型变量传参不同,一维字符型变量传参可以忽略数组空间,因为有自己的结束标准,可以在传参的过程中使用“\0”来结束。

总结:在数组传参中只有一维字符型数组传递字符串时,可以不用传递长度。

数组在传递的过程中都是使用指针地址传参的。

标识符、作用域

动态区:局部变量 ,auto 可以修饰变量,放在栈上(自动开辟,自动释放)

静态区:全局变量,以及static修饰的静态变量静态区的变量只会被初始化一次,且不能用其他变量定义。

static可以将局部变量定义在静态变量区。

static修饰全局变量指的是将该变量限定在本文件中。

register int a;         //放在cpu寄存器上。建议性。

extren int a; 表示该变量定义在别的文件中, 一般不带初始化。一般不做定义,只做声明。

考点:地址是内存单元上的编号,因此32位电脑和64位电脑由于地址总线的原因,所访问的内存容量被限制。例如32位电脑的内存最大为4g。例如:2^32。


指针

指针的出现使得c语言实现可以操控到硬件层面的功能,重要通过指向地址空间。

指针从定义形式上来讲,以一种区别于整型浮点型的数据类型,其数据空间中存放的是地址编号。

从作用来讲:指针是指向某一特定空间的变量。

指针的形式为: int * p = &a;解释为基类型为int型的指针,指针变量p 存储的是a变量的地址。

在运算中:*p运算理解为间接运算。

总共分三步走:1、取出指针变量p中存储的地址编号。

2、找到地址编号所对应的地址,偏移一个基类型的大小的空间。

3、把这块空间中的值当做一个基类型的变量。

指针与数组的关系。

我们可以认为数组是指针的不断偏移。

 

数组的变量名代表的是该数组的首地址,也就是指针变量所储存的地址编号。

想要直接在被调函数中修改主调函数,可以使用地址来进行传参。

这也是之前数组为何在调用的时候可以被修改。

指针可以进行*(p + 1):含义是偏移一个基类型大小的空间。

指针的补充

未被初始化的指针变量,我们称为野指针。一般这种指针直接赋值为NULL。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值