C语言中static与sizeof查缺补漏篇

yizhihongxing

C语言中static与sizeof查缺补漏篇

static关键字

在C语言中,static是一个关键字,用于声明静态变量和静态函数。静态变量和静态函数具有以下特点:

  1. 静态变量:静态变量在程序的整个生命周期内都存在,不会因为函数的调用而被销毁。它们在内存中的位置固定,只会被初始化一次。静态变量默认情况下具有文件作用域,即只能在声明它的文件中访问。

示例1:静态变量的使用

#include <stdio.h>

void increment() {
    static int count = 0;  // 静态变量
    count++;
    printf(\"Count: %d\
\", count);
}

int main() {
    increment();  // 输出:Count: 1
    increment();  // 输出:Count: 2
    increment();  // 输出:Count: 3
    return 0;
}

在上面的示例中,count是一个静态变量,它在increment函数中被声明。每次调用increment函数时,count的值都会增加,并且在不同的函数调用之间保持不变。

  1. 静态函数:静态函数只能在声明它的文件中访问,不能被其他文件调用。静态函数的作用是限制函数的作用域,防止与其他文件中的同名函数发生冲突。

示例2:静态函数的使用

#include <stdio.h>

static void printMessage() {
    printf(\"Hello, static function!\
\");
}

int main() {
    printMessage();  // 输出:Hello, static function!
    return 0;
}

在上面的示例中,printMessage函数被声明为静态函数,因此只能在声明它的文件中调用。

sizeof运算符

sizeof是C语言中的一个运算符,用于计算数据类型或变量在内存中所占的字节数。它的语法形式为sizeof(type)sizeof(expression),其中type是数据类型,expression是一个表达式。

示例3:使用sizeof计算数据类型的大小

#include <stdio.h>

int main() {
    printf(\"Size of int: %zu bytes\
\", sizeof(int));  // 输出:Size of int: 4 bytes
    printf(\"Size of float: %zu bytes\
\", sizeof(float));  // 输出:Size of float: 4 bytes
    printf(\"Size of char: %zu bytes\
\", sizeof(char));  // 输出:Size of char: 1 byte
    return 0;
}

在上面的示例中,sizeof运算符被用于计算不同数据类型的大小,并通过printf函数输出结果。

示例4:使用sizeof计算变量的大小

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    printf(\"Size of arr: %zu bytes\
\", sizeof(arr));  // 输出:Size of arr: 20 bytes
    printf(\"Number of elements in arr: %d\
\", size);  // 输出:Number of elements in arr: 5
    return 0;
}

在上面的示例中,sizeof运算符被用于计算数组arr的大小。通过将数组的总字节数除以单个元素的字节数,可以得到数组中元素的个数。

希望以上内容对你有所帮助!如有任何疑问,请随时提问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中static与sizeof查缺补漏篇 - Python技术站

(0)
上一篇 2023年7月29日
下一篇 2023年7月29日

相关文章

  • 详解玩转直播系列之消息模块演进

    详解玩转直播系列之消息模块演进 引言 在直播过程中,消息模块是必不可少的组件之一,它可以帮助主播和观众之间进行有效的沟通和互动。本文将详细讲解消息模块的演进过程,以及如何更好地玩转消息模块。 消息模块的演进 第一阶段:文本消息 在最初的直播平台中,消息模块只提供了简单的文本消息功能,主播和观众可以通过文本消息进行基本的沟通和互动。文本消息可以在消息列表中显示…

    other 2023年6月27日
    00
  • Java编译和解释执行对比及原理解析

    Java编译和解释执行对比及原理解析 Java是一种编程语言,它支持编译和解释执行两种方式。本文将对Java编译和解释执行进行对比,并探讨它们的原理。 Java编译原理 Java编译器将Java源代码编译成字节码,这些字节码可以运行在Java虚拟机上。Java代码编译成字节码的过程分为以下几个步骤: 词法分析:将源代码分解成一个个的单词和符号。 语法分析:将…

    other 2023年6月26日
    00
  • Android模仿美团顶部的滑动菜单实例代码

    Android模仿美团顶部的滑动菜单实例代码攻略 1. 实现顶部滑动菜单的布局 首先,我们需要创建一个布局文件来实现顶部滑动菜单的效果。可以使用CoordinatorLayout作为根布局,并在其中添加一个AppBarLayout和一个NestedScrollView。 <androidx.coordinatorlayout.widget.Coordi…

    other 2023年8月21日
    00
  • SQL 截取字符串应用代码

    以下是SQL截取字符串应用代码的完整攻略。 基础概念 在SQL中,有两个函数可以用来对字符串进行截取: LEFT()函数:截取字符串左边的字符。 RIGHT()函数:截取字符串右边的字符。 这两个函数都可以用来对字符串进行截取,它们的使用方式非常简单,只需要指定要截取的字符串,以及要截取的长度即可。 示例说明 现在,假设我们有一张学生信息表,其中包含学生的姓…

    other 2023年6月20日
    00
  • #include 用法之我见

    #include 用法之我见 作为一个C++程序员,在处理动态数组时,使用STL中的std::vector是一种比较常见的选择。在这篇文章中,我们将探讨<vector>头文件中vector的基本用法以及一些高级技巧。 概览 在使用std::vector之前,需要包含头文件<vector>. #include <vector&gt…

    其他 2023年3月28日
    00
  • 关于python:可以在网址中使用os.sep而不是“/”

    在Python中,可以使用os.sep代替斜杠“/”来表示文件路径中的分隔符。这种方法可以使代码更加可移植,因为不同的操作系统使用的文件路径分隔符可能不同。下面是两个示例说明: 示例一:使用os.sep拼接文件路径 在Python中,可以使用os.path.join()方法来拼接文件路径。示例代码如下: import os path = os.path.jo…

    other 2023年5月8日
    00
  • java编译后的文件出现xx$1.class的原因及解决方式

    当我们使用 Java 编写代码并进行编译时,有时会在编译后的文件中看到类似于 xx$1.class 的文件出现,这是因为 Java 使用内部类实现某些功能时生成的类文件。那么该如何解决这个问题呢?下面是详细的攻略。 什么是内部类 在 Java 中,内部类是指定义在另一个类中的类。内部类有以下几种类型: 成员内部类 局部内部类 匿名内部类 静态内部类 内部类可…

    other 2023年6月26日
    00
  • 代理服务器CCProxy安装与图文设置方法

    下面是“代理服务器CCProxy安装与图文设置方法”的详细攻略。 安装 首先,你需要下载CCProxy的安装文件,可以从官网(http://www.youngzsoft.net/ccproxy/)下载。下载完成后,双击安装文件,按照提示进行安装,安装完成后,启动CCProxy。 配置 CCProxy 配置代理服务器 打开CCProxy,单击“选项”按钮,选择…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部