美文网首页
static、const和sizeof关键字

static、const和sizeof关键字

作者: 兰帕德 | 来源:发表于2021-12-27 17:37 被阅读0次
一、static关键字

static关键字的作用有如下两个:

  • 修饰存储类型,使之成为静态存储类型。其中,在函数内定义的静态局部变量,存放于内存中的静态区,所以即使函数运行结束,也不会被销毁,函数下次运行时,仍能取到它的值。在函数外定义的静态全局变量,作用域仅限于定义该变量的文件中,不能被其他文件通过extern引用。
  • 修饰链接属性,使之成为内部链接属性。静态函数只能在声明它的源文件中使用。
二、const关键字

const关键字的作用有如下三个:

  • 1、声明常变量,是的指定的变量不能被修改。
const int a = 1; // a的值不能被修改
const int *p1; // p1为指向整型常量的指针,p1的值可以修改,但是p1指向的值不能修改
int *const p2; // p2为指向整型的常量指针,p2的值不能修改,但是p2指向的值可以修改
const int *const p3; // p3为指向整型常量的常量指针,p3及其指向的值都不能修改
  • 2、修饰函数形参,使其在函数内部不能被修改。
- (int)square:(const int)a {
    return a*a;
}
  • 3、修饰函数返回值,使其不能被修改。
三、sizeof关键字

sizeof是在斌阿姨阶段处理,且不能被编译为机器码。sizeof的结果等于对象或类型所占的内存字节数。sizeof的返回值类型为size_t;

  • 变量
int a; // sizeof(a)为4
  • 指针
int *p; // sizeof(p)为4
  • 数组
int a[5]; // sizeof(a)为4*5(数组大小)
int b[0]; // sizeof(b)为0
  • 结构体
struct(int a; char c)s; // sizeof(s)为8,与结构体字节对齐有关

【注1】展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。
【注2】结构体大小必须是所有成员大小的整数倍,这里所有成员计算的是展开后的成员,而不是将嵌套的结构体当做一个整体。
【注3】不能对结构体中的位域成员使用sizeof。

  • void
sizeof(void) // 1
sizeof(void *) // 4

相关文章

  • static、const和sizeof关键字

    一、static关键字 static关键字的作用有如下两个: 修饰存储类型,使之成为静态存储类型。其中,在函数内定...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • static关键字和const关键字的作用

    static关键字和const关键字的作用 static 答: static修饰的全局变量和函数只在当前文件中有效...

  • const,static,extern简介

    解释关键字 static,const,inline,Static,inline,volatilestatic 修饰...

  • C中的内存管理

    存储类别、链接和内存管理 关键字:auto 、extern 、static 、register 、const、vo...

  • OC中的关键字

    参考了:某大神 目录:关键字const/static/extern的意思&&用法 a、const; b、stati...

  • runtime的关联引用

    下文会用到const,static关键词,下一篇文章会针对const,static,extern等关键字的用法详细...

  • iOS中static、const、extern

    开发中阅读他人代码,经常看到const、static和extern关键字,记录下 1、const 用来定义常量,宏...

  • const、static、extern、宏

    const static extern 宏 const与宏的区别 static和const的联合使用 extern...

  • 浅谈 Const、Exetrn和Static

    Const const修饰常量 被const修饰的属性不能改变: static和exetrn static 在全局...

网友评论

      本文标题:static、const和sizeof关键字

      本文链接:https://www.haomeiwen.com/subject/voisqrtx.html