C语言指针算术运算和结构体

C语言指针算术运算和结构体

指针算术运算

指针算术运算是指对指针变量进行加、减等运算。指针运算只有针对的是拥有某种类型的指针时才是有意义的,而且仅有两个指针的差异才有实际意义。指针变量与整数值进行运算时,整数值被转换为指向相应元素的指针。

以下是一些指针算术运算的示例:

1. 指针的加法运算

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *p = arr;
    int i;

    for (i = 0; i <= 4; i++) {
        printf("%d ", *p);
        p++; // 指针变量p加1
    }

    return 0;
}

上述示例程序中,定义一个整型数组arr和一个指向该数组首地址的指针p。遍历数组元素时,使用指针变量p来访问数组元素。通过指针加法运算,p的值每次增加一个int类型所占的字节数,即p指向下一个数组元素的地址。

2. 指针的减法运算

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *p = arr + 4; // 指向数组最后一个元素的地址

    while (p >= arr) {
        printf("%d ", *p);
        p--; // 指针变量p减1
    }

    return 0;
}

上述示例程序中,定义一个整型数组arr和一个指向该数组最后一个元素的指针p。从数组尾到数组头遍历数组元素时,使用指针变量p来访问数组元素。通过指针减法运算,p的值每次减少一个int类型所占的字节数,即p指向前一个数组元素的地址。

结构体

结构体是一种自定义数据类型,可以将不同的数据类型组合在一起形成一个新的数据类型。结构体可以包含基本数据类型、数组、指针、其他结构体等等。定义结构体后,可以根据结构体类型定义变量,使用符号“.”访问结构体成员。

以下是一个简单的结构体示例:

#include <stdio.h>

struct student {
    char name[20];
    int age;
    float score;
};

int main() {
    struct student s = {"Tom", 18, 89.5};

    printf("name: %s\nage: %d\nscore: %.1f", s.name, s.age, s.score);

    return 0;
}

上述示例程序中,定义了一个名为student的结构体,该结构体包含三个成员:char类型的name数组、int类型的age、float类型的score。程序中声明一个student类型的结构体变量s,并初始化name、age、score成员的值。通过“.”符号访问结构体成员,输出结构体变量s的name、age、score。

结构体还可以使用指针访问结构体成员。以下是一个结构体指针示例:

#include <stdio.h>

struct student {
    char name[20];
    int age;
    float score;
};

int main() {
    struct student s = {"Tom", 18, 89.5};
    struct student *p = &s;

    printf("name: %s\nage: %d\nscore: %.1f", p->name, p->age, p->score);

    return 0;
}

上述示例程序中,定义了一个名为student的结构体,该结构体包含三个成员:char类型的name数组、int类型的age、float类型的score。程序中声明一个类型为“struct student*”指针变量p,将p指向结构体变量s的地址。使用“->”符号访问结构体成员,输出结构体变量s的name、age、score。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言指针算术运算和结构体 - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • jar命令的用法详解

    Jar 命令的用法详解 Jar 命令是 Java 开发中常用的命令之一,它主要用于在 Java 平台上实现打包操作。在本篇攻略中,我们将学习如何使用 Jar 命令来进行打包操作,以及如何解压缩已有的 Jar 包。以下是具体的步骤和示例说明。 1. Jar 命令的基本用法 jar [选项参数] 打包生成的 jar 文件名 [源文件或目录] 选项参数(可选):J…

    C 2023年5月22日
    00
  • Go/C语言LeetCode题解997找到小镇法官

    下面是关于“Go/C语言LeetCode题解997找到小镇法官”的完整攻略: 题目描述 在一个小镇里,按从1到N标记了N个人。传言中,这些人中有一个是小镇上的法官。如果小镇的法官真的存在,请你找出他并返回其编号;否则,返回-1。 注意: 要求时间复杂度O(N),空间复杂度O(1); 1 <= N <= 1000; trust[i]是一个长度为2的…

    C 2023年5月22日
    00
  • C++实现LeetCode(122.买股票的最佳时间之二)

    下面是详细讲解“C++实现LeetCode(122.买股票的最佳时间之二)”的完整攻略。 什么是买股票的最佳时间问题 买股票的最佳时间问题是一个经典的动态规划问题,其求解目标是:给定一组股票价格,求出在给定的时间范围内,我们应该在哪些时间买入和卖出股票,才能获取最大收益。 LeetCode的买股票的最佳时间问题 针对该问题,LeetCode中的 https:…

    C 2023年5月22日
    00
  • 辐射4人员属性设定详细分析

    辐射4人员属性设定详细分析 在辐射4中,人员属性设定对游戏的角色扮演和流程起着很大的作用。本文将详细分析人员属性设定的每个部分,并提供一些有用的技巧和建议。 S.P.E.C.I.A.L S.P.E.C.I.A.L.代表了Strength(力量)、Perception(感知)、Endurance(耐力)、Charisma(魅力)、Intelligence(智力…

    C 2023年5月22日
    00
  • R语言基础统计方法图文实例讲解

    R语言基础统计方法图文实例讲解 本文将为读者讲解使用R语言进行基础的统计分析方法,具体包括了数据的读取、数据展示及探索性数据分析(EDA)、t检验、方差分析及线性回归分析。 1. 数据的读取 在R语言中,我们可以使用以下代码读取csv或Excel文件: # 读取csv文件 data <- read.csv("data.csv", h…

    C 2023年5月22日
    00
  • c语言判断是否素数程序代码

    当你需要判断一个数是否为素数时,可以使用C语言编写一个程序来实现。下面是一个完整的C语言程序示例: #include <stdio.h> #include <math.h> int is_prime(int num); int main() { int number; printf("请输入一个整数:"); sca…

    C 2023年5月23日
    00
  • C语言中如何进行代码规范化?

    在C语言中,代码规范化非常重要,它可以提高我们编写代码的效率,降低出错的概率,并使代码更加易于维护。下面我将给出一些C语言代码规范化的攻略。 文件命名 文件名应以小写字母命名,单词之间用下划线连接。如:my_first_program.c 缩进 为了使代码易于阅读,应该使用缩进。对于每个缩进层次,使用4个空格。不要使用制表符。 if (x == y) { p…

    C 2023年4月27日
    00
  • 详解Linux查找目录下的按时间过滤的文件

    以下是详解Linux查找目录下的按时间过滤的文件的完整攻略。 查找命令介绍 Linux中经常使用的查找命令是find命令。find命令的语法格式如下: find <path> <expression>… 其中,<path>是要查找的目录路径,<expression>是查找的表达式,可以使用多个表达式来进行组…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部