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

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

文章目录

  • 前言
  • 十三.指针
    • 1.内存
    • 2.指针
  • 十四.结构体
  • 最后


前言

今天我们接着上一次的初识C语言(3),继续讲初识C语言(4)
对于大多数初学C语言的同学,指针和结构体毫无疑问是难点和重点,今天就由云小逸带你初步了解认识指针和结构体
——————————————————————————————

十三.指针

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

1.内存

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

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

初识C语言【补】——指针、结构体_第2张图片

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

2.指针

(1)

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

初识C语言【补】——指针、结构体_第3张图片
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)指针变量的大小
不管是什么类型的指针,都是在创建变量,指针变量的大小取决于一个地址存放的时候,需要多大的空间
初识C语言【补】——指针、结构体_第4张图片
初识C语言【补】——指针、结构体_第5张图片

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

(4).补:

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

十四.结构体

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

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

初识C语言【补】——指针、结构体_第6张图片

#include
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.白天归顺生活,夜晚忠于自己

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

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

你可能感兴趣的:(C语言,c语言)