初识C语言【补】——指针、结构体

简介: 初识C语言【补】——指针、结构体
🌹作者:云小逸
📝个人主页: 云小逸的主页
📝码云: 云小逸 (YunXiaoYang003) - Gitee.com
🤟motto:要敢于一个人默默的面对自己, ==强大自己才是核心==。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开==!🤟
👏专栏:C语言初阶👏专栏:C语言进阶👏专栏:数据结构和算法👏
👏专栏:C++初阶---👏专栏:C++进阶--👏专栏:Linux学习👏 在这里插入图片描述

@TOC


前言

今天我们接着上一次的初识C语言(3),继续讲==初识C语言(4)==。
对于大多数初学C语言的同学,指针和结构体毫无疑问是难点和重点,今天就由云小逸带你初步了解认识==指针和结构体==。
——————————————————————————————
首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你

1.应该有更好的方式开始新的一天,而不是千篇一律的在每个上午醒来。
2.我们必须要活出让其他人想要效法的样子
3.有些人生来光芒万丈,有些人必须逆风生长.
4.每个人身上都有太阳,主要是让它如何发光.
5.面对大海我无限惭愧.我年华虚度,空有一身疲倦.和所有以梦为马的诗人一样,岁月易逝,一滴不剩.

十三.指针

学习指针之前我们先了解一下==内存==的一些基本概念,以便更好地理解指针

1.内存

对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行时需要内存来存储一些临时变量。

首先我们先说一下==32位电脑==:
32位是指电脑CPU一次处理的最大的数据量,可以理解为有32根地址线,而在电脑中一般==通过0\1来表达信息、二进制存储信息==,由此会有一下这样的情况。
又内存会划分为一个个的内存单元,每个内存单元都有 编号,而一个内存单元的大小
是一个字节(1个byte)通过单位换算得:2^32个字节为4GB。同理,64位电脑为8GB。

在这里插入图片描述

类比:每个房间都有一个==门牌号==,而这里的门牌号是等价于C语言中指针,由此我们来谈一谈指针。

2.指针

(1)

#include<stdio.h>
int main(void)
{
    int a = 10;//想内存申请4bite即32个bit存放10
    int* p = &a;//p就是指针变量
    printf("%p\n", p);
    printf("%p", &a);
    return 0;
}

在这里插入图片描述
**1.地址在内存中是以二进制形式存储的,打印地址是以十六进制存储的,因为二进制太长了。
2.内存中的数据是==以十六进制倒着存的==,因此读要倒着读。
3.每一次重新运行程序,a的地址会重新创建,因此每一次a的地址不相同。**

(2)

int a=10; int p=&a;//p叫做指针变量,p指向整形a, int表示指向的对象是int类型,表示p为指针变量
p中的 是解引用操作符,意思是通过p中存放的地址,找到p指向的对象, p(&a)就是p指向的对象。 可以通过 p=20来修改p指向p指向的对象的值。 &a拿到四个字节的第一个字节,即最小的字节(内存中的数据是以十六进制倒着存的)

(3)指针变量的大小
不管是什么类型的指针,都是在创建变量,指针变量的大小取决于一个地址存放的时候,==需要多大的空间==。
在这里插入图片描述
在这里插入图片描述

32位电脑的地址——32bit——4byte,所以指针变量大小为4个字节。
64位电脑的地址——64bit——8byte,所以指针变量大小为8个字节。

(4).补:

指针是一种==复合数据类型==,指针变量内容是一个地址,因此一个指针可以表示该系统的整个地址集合
指针可以认为是一种数据类型,也可以认为是定义出来的==指针变量==。

十四.结构体

由于生活中有许多复杂对象,比如人,任由很多元素:名字,年龄,性别,地址,电话。
而且它们是不同类型的:int,char,float等,所以需要一种自定义类型可以定义复杂对象,由此产生结构体==struct==

#include<stdio.h>
struct stu
{
    char name[20];
    int age;
    char sex[10];
    char tale[12];
};
int main(void)
{
    struct stu s;
    return 0;
}

用类型创建变量

#include<stdio.h>
struct stu
{
    char name[20];
    int age;
    char sex[10];
    char tale[12];
};
Print(struct stu* ps)
{
    printf("%s %d %s %s", ps->name, ps->age, ps->tale);//结构体指针对象->成员名
}
int main(void)
{
    struct stu s = { "zhngsan",17,"male","123456789101" };
    printf("%s %d %s %s ", s.name, s.sex, s.tale);//结构体对象.成员名
    Printf(&s);
    return 0;
}

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.做==更好的自己==,而不是完美的别人。
2.谁都愿意做自己喜欢的事情,可是,做你该做的事情,才叫成长。
3.活成一个真正有形的人,而不是—摊肉、一团混乱不堪的情绪。
4.放弃很容易,但坚持—定很酷。
5.知识不是力量,知识用起来才是力量。
6.人生只有两个选择,要么忙着死,要么忙着活! ==熬得住就出众,熬不住就出局==,你的野心很大,所以没资格停下。
7.白天归顺生活,夜晚忠于自己

最后如果觉得我写的还不错,请不要忘记==点赞==✌,==收藏==✌,加==关注==✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!

目录
相关文章
|
19天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
73 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
15天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
83 14
|
19天前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
80 10
|
19天前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
44 9
|
19天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
40 7
|
24天前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
101 13
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
57 11
|
23天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
23天前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
73 3