(用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语言进行较为详细的解释,开始新的学习。

目录
相关文章
|
2天前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
2天前
|
C语言
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
2天前
|
存储 C语言 C++
指针进阶(函数指针)(C语言)
指针进阶(函数指针)(C语言)
|
2天前
|
网络协议 编译器 Linux
结构体(C语言)
结构体(C语言)
|
2天前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
17小时前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
5 0
|
1天前
|
C语言
C语言中的结构体
C语言中的结构体
4 0
|
1天前
|
C语言
C语言中的函数指针、指针函数与函数回调
C语言中的函数指针、指针函数与函数回调
6 0
|
1天前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
5 0
|
1天前
|
存储 C语言
C语言数组指针详解与应用
C语言数组指针详解与应用
8 0