(用0基础的思维让你理解指针和结构体)初识C语言(0基础开始)五

简介: (用0基础的思维让你理解指针和结构体)初识C语言(0基础开始)五

(今天我们继续来学习指针,讲完这章后估计有同学会问?指针这就结束了吗?其实不是,这篇文章只是让大家初步了解指针,可以看懂代码,并自己可以写出一些简单的代码,并不需要过度深究,复杂的我们以后再学。)


指针:


在讲指针之前我们先来介绍一下内存:


1.内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

2.所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1个字节。

3.为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该 内存单元的地址。

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。


那么如何取出变量中的地址呢?


举例:

#include <stdio.h>
int main ()
{
int num = 10 ;
& num ; // 取出 num 的地址
    // 注:这里 num 的 4 个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf ( "%p\n" , & num ); // 打印地址, %p 是以地址的形式打印
return 0 ;

那么我们取出地址后,如何 储存变量的地址 呢?这又引出来一个概念: 指针变量。

理解记忆:(先牢记:指针就是地址,指针变量也就是地址变量。像生活中也有地址嘛,门牌号,单元号啥的,知道了你的地址才能迅速找到你,C语言中这么多数据如何精准定位某个数据呢,这时候也需要知道某个数据的地址,C语言中数据的地址就是地址编号嘛,不要把指针想得过于复杂,他就是一个数据的地址嘛。)

先看这个例子:

int main ()
{
int num = 10 ;         1
int * p = & num ;       2
    return 0 ;

解释:第1行,我们定义了一个 整形变量num,

         第2行。等号右边的内容我们取出了num的地址,等号左边的内容我们 定义一个指针变量来存放num的地址,这个整形指针变量的类型是int *。这颗 星表明它是 指针, int表明 指针所指向的数据为整形。

现在我们已经把num的地址给存起来了,那么我们 如何通过它的地址找到它 来想对他做出一些改变呢?接下来再看一个例子:

int main ()
{
int num = 10 ;         1
int * p = & num ;       2
  *p=20;            3
    return 0 ;

第三行这个 * 是 解引用操作符 的意思,它的作用是 通过地址找到储存的内容。 我们这里 *p=20 的意思就是通过num的地址找到它,把它的值修改成20,这时候num的值就成20了。

下面是代码和运行结果:

指针的介绍就初步介绍到这里。


结构体:


结构体 是 C 语言中特别重要的知识点,结构体使得 C 语言有能力描述 复杂类型 。

那么我们怎样 引出结构体这个概念 的呢?我们生活中的 复杂数据 用其他类型根本无法描述,

比如描述 学生 ,学生包含: 名字 + 年龄 + 性别 + 学号 这几项信息。 这里只能使用 结构体 来描述了。

先看下面这行代码:

struct Stu
{
    char name [ 20 ]; // 名字
    int age ;       // 年龄
    char sex [ 5 ];   // 性别
    char id [ 15 ] ; // 学号
};

解释:

struct是结构体关键字。struct Stu是你自己定义的类型。


接下来我们初始化一个结构体:


struct Stu  s = {"张三", 20, "男", "6666“}


这个代码的意思是:定义了一个名字为s的结构体变量。


(大括号中的内容依次对应上述自定义中大括号的数据,这个也很好理解)


如何使用结构体变量呢?看下面这一行代码。


printf ( "name = %s age = %d sex = %s id = %s\n" , s . name , s . age , s . sex , s . id );

那个 点(.) 就是 结构体访问操作符 。(也很符合逻辑,不难理解)

对结构体的初级学习就到这里,后面我们会详细学习。


初始C语言的内容就结束了,从下篇文章开始会给大家对C语言进行较为详细的解释,开始新的学习。

目录
相关文章
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
390 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
10月前
|
存储 人工智能 Java
一文轻松拿捏C语言的指针的基础使用
本文介绍了C语言中的指针概念,包括直接访问和间接访问内存的方式、指针变量的定义与使用、取址运算符`&`和取值运算符`*`的应用,帮助读者深入理解指针这一C语言的核心概念。君志所向,一往无前!
181 0
|
12月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
934 14
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
644 10
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
1320 9
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
1139 13
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
369 7
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。