在初学C语言时到结构体总与数组联系在一起,这就形成了很多想当然,所以实践是检验真理的唯一途径,上代码:

#include <stdio.h>
#include <stdlib.h>
/*结构体变量的值是整个结构体。结构体变量名就是变量名。
象int a一样,只是printf 处理不了结构体。通过 printf
输出结构体,结果是没有意义的(整个结构体复制堆栈中,按
照对应的格式输出)。取地址要用&,不用钻牛角尖,不直接
输出就行了*/
typedef struct {short d;short e;
}DATA2;
typedef struct {int a;short b;DATA2 c;char f;
}DATA1;
void test01() {DATA1 stu = {0};printf("长度=%d\n", sizeof(stu));printf("a的地址%p\n", &stu.a);printf("b的地址%p\n", &stu.b);printf("d的地址%p\n", &stu.c.d);printf("e的地址%p\n", &stu.c.e);printf("f的地址%p\n", &stu.f);
}
/*结果
a a a a
b b d d
e   f
*/void test02() {DATA2 stu = { 20,'a' };char *p = &stu;printf("d的值是%c\n", *(short*)(p + 2));//(short*)p->c是错的,一个char型指针不能指向结构体成员
}
void test03() {DATA2 li = { 16, 5 };printf("%8x\n", li);//printf("%x\n", *li);是错的, * 操作的只能是指针printf("%p\n", &li);printf("%8x\n", *(int *)&li);
}

结构体作为一种自定义数据类型,结构类似于数组,但是结构体名 与数组名有很大的区别:

数组名是作为内存中固定不可修改的地址常 量而存在,不可以直接赋值。
而结构体相当于int,double之类的系统内定类型,代表了一段内存空间的内容。是可以整体赋值的,结构体中的数组,在结构体赋值的过程中,也是可以针对每个元素一一赋值的。

test03()运行结果:

初学C语言对于结构体变量名的一些想当然相关推荐

  1. C语言 struct <结构体类型名> 结构体变量名

    #include<stdio.h> int main(int argc, char* argv[]) {char name[20] = "拉稀";char dogcla ...

  2. c语言结构体成员变量私有化,C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...

  3. c语言中结构体变量的作用,C语言 结构体 类型变量的 定义 和 引用

    前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...

  4. C语言中结构体变量的定义及引用

    一.结构体变量的定义 1.结构体类型与结构体变量分开定义 一般形式如下: struct<结构体名><结构体变量名>; eg:struct student student1,st ...

  5. c语言结构体结构体变量名,C语言结构体及结构体变量

    一.结构体类型的定义 结构体是一种新数据类型,属构造类型,它由若干类型各异的"成员"组成:描述这些"成员"可以使用任何基本数据类型,甚至是另外一种构造数据类型都 ...

  6. go 指针变量和普通变量的转化_C语言 | 指向结构体变量的指针变量

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

  7. 用字典存储学生成绩查询_C语言 | 用结构体变量存储学生信息

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

  8. 【C语言】结构体变量定义、初始化、使用

    目录 前言 一.声明"结构体类型" 二.定义结构体变量 方法 1  先声明结构体类型,再定义结构体变量 方法 2 声明类型的同时定义变量 *方法 3 不指定结构体名(结构体标记), ...

  9. c语言变量体,c语言之结构体变量的定义

    结构体是一种数据类型(像int.char.flaot是数据类型一样),可以用它定义变量. 用结构体类型定义变量的方式有三种: 一.先定义结构体类型,再定义变量 一般形式:struct 结构体名 { 类 ...

  10. c语言实现结构体变量private,C语言中结构体变量私有化详解

    背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate ...

最新文章

  1. Linux哪个和Windows很像,Linuxfx - 这套Linux操作系统看起来和Windows 10非常类似
  2. mysql客户端与服务端_mysql语句在客户端与服务端的基本使用
  3. 代码这样写更优雅(Python版)
  4. CTFshow php特性 web98
  5. 巧用Eclipse中用户自定义包(User Libraries)
  6. Python__面向对象思想
  7. 笔记-项目配置管理-配置标识-配置识别与建立基线
  8. oracle走当前时间分区,Oracle分区使用波斯日历的时间间隔
  9. 嵌入式软件设计第10次实验报告
  10. cartographer探秘第四章之代码解析(五) --- 后端优化 --- 闭环约束2 --- FastCorrelativeScanMatcher2D
  11. nginx中upstream的max_conns属性使用
  12. mysql qps 索引查询_mysql QPS 抓取和分析
  13. 软件设计模式与体系结构(入门基础知识)
  14. 为计算机技术奉献一生语录,乐于奉献的名言警句40句
  15. iOS图片加载策略的简单实现
  16. XP IIS下配置.net的问题总结与简单解决方法
  17. 视频管理系统源码php,video cms 视频分享管理系统
  18. 基于Qt、FFMpeg的音视频播放器设计二(FFMpeg视频处理之类封装)
  19. oracle 设行宽,Oracle设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置
  20. 使用shape绘制阴影图层阴影效果

热门文章

  1. 组合按键的软件设计(c语言)
  2. 计算机科学基础 浙大学分,Zju生存指南-学(上)
  3. C语言:输出大写的三角形字母表(进阶)
  4. 获取手机mac地址和串号IMEI
  5. kaggle房价预测
  6. ★SMILES数据处理+评价指标所有的代码
  7. c++获取umg ue_UE4中UMG与C++交互 页面文本修改
  8. 计算机一级评分原理,计算机一级Word和Excel操作自动评分的实现探究
  9. 仿小米商城网: 项目启动
  10. 关闭防火墙步骤(详细)