准大一自学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,以上就是瑶瑶子的”流水账”自学日记啦
希望对大家有帮助,如果有不准确,或错误的地方,恳请各位同学大佬多多指点呀!(✿◕‿◕✿)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142485.html