【准大一自学C之结构体指针就是结构体变量?】

准大一自学C之结构体指针就是结构体变量?

我是菜菜的但正在努力的准大一计科生瑶瑶子,此篇用于记录暑期自学C语言,现在还是初学阶段,可能有很多理解不太深入或准确的方面,希望各位同学大佬能在评论区多多指点呀!感谢!

1、什么是结构体?

首先,结构体也是一种类型,比如像整形也是一种类型,用int来描述整形
其次,它是我们创造出来用来描述一些对象,比如人、植物等等一些很复杂的对象的

下面我们用具体的例子展示一下结构体的用法:

// A code block
var foo = 'bar';
// 结构体基本用法
struct people
{char name[10];
 short age;//其实我想知道这里为什么不初始化
}//好,我们现在创造出来描述这个人名字和年龄的一个结构体类型
int main()//现在利用该类型的结构体变量也就是i

struct people i={"瑶瑶",17};
printf("人名%s\n",i.name);
printf ("年龄%d\n",i.age);

return 0;
}

or

// 第二种打印方法
struct people i={"瑶瑶",17};
struct people* b=&i;
printf("人名%s\n",(*b).name};
printf("年龄%d\n",(*b).age};
//这两个方法都是用了结构体变量打印,这里的结构体变量就是i和*b

由上面的代码我们简单学习了结构体含义、作用以及基本用法啦

2、什么是变量?&指针是变量吗?

变量?

首先,变量的含义:我们在电脑内存中取一块空间,来存放数据或其他,那么我们把这个空间命个名字怎么办,好,就用变量来命名。比如int a=1;就是在内存中找到一块空间来储存整形数据1,这个空间以a来命名。

其次,a中的数据是可以修改的,也就是变化的,所以a叫做变量而不是常量

综上所述,变量代表数据或者说内存的一个名字不是代表地址哦


2023/1/30补充
变量,就是一个容器,用来存储数据,这个容器有个名字,就是变量名。
变量存储的数据如果是地址,这个变量我们常称为指针变量或者指针

指针?

首先,指针本质是地址,按照上述内容,我们在内存中找到一个空间来存放数据,这个数据以变量来命名,那变量=指针?no no no!比如你知道一个建筑物的名字,你就能找到这个建筑物吗?当然是不行的,我们肯定要知道这个建筑物的地址对吧。在电脑中也一样,我们怎么样找到这块内存空间呢,靠哒就是指针啦,指针就是地址,不同类型的指针代表着不同类型的地址。比如 int 类型的指针,就是某个int变量的地址,


2023/1/30修改说法:
变量本质就是一个容器,代表内存空间,变量名就是这个内存空间的名字,只知道名字,是无法找到这个空间的。还需要地址/指针(这里的指针就是代表内存空间地址)

其次,指针还具有指向性

综上,指针并不是变量


2023/1/30补充
确实,指针的确不是变量,指针本质就是地址,但是口头语中,我们所说的指针,指的是指针变量,即:存放指针的变量。

指针变量?

指针变量,那本质还是变量,只不过储存的是地址,就是指针

总而言之,指针变量用来存放指针

3、结构体变量是…?

了解上述知识,那结构体变量就是结构体这种类型的某个变量,这里就是指i,和*b


2023/1/30:
结构体变量本质还是变量

4、结构体指针是…?

结构体指针,那就是结构体地址呗,我们看看上面代码用结构体指针怎么打印

// 结构体指针打印name&age
struct people{

char name[10];
int age;//注意:分号不能掉

}
int main({
struct people i={"瑶瑶",17};
struct people* b=&i;//这里的b就是指针变量

printf("%s\n",b->name);
printf("%d\n",b->age);

return 0;

}//这里我们用指针变量b和操作符->来打印name&age
//利用的是指针(地址)具有指向性

5、结构体变量&结构体指针的区别?

综上,结构体变量,是结构体的某种变量,来命名结构体空间&储存数据的
结构体指针,就是结构体指针不是变量,它是一个地址指向了结构体的某个地址,具有指向性

我们来总结一下;

// .操作符和->操作符区别
//结构体变量.成员(如name或者age)eg:
printf("年龄%d\n",i.age); 
printf("年龄%d\n",(*b).age);
//结构体指针->成员 eg:
printf("年龄%d\n",b->age);


OKK,以上就是瑶瑶子的”流水账”自学日记啦
希望对大家有帮助,如果有不准确,或错误的地方,恳请各位同学大佬多多指点呀!(✿◕‿◕✿)

在这里插入图片描述

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是瑶瑶子啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值