STM32——C语言知识点:指针、结构体
/*
============================================================================
Name : Cyuyanfuxi.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/ #include <stdio.h>
#include <stdlib.h>
//函数声明
void reset(int i);
void reset2(int* p);
void add_by_point(int x,int y,int *result);
//结构体定义
struct student
{
int age;
float weight;
char name[];
};
void struct_caculate(struct student *p); int main(void)
{
//求类型的字节
printf("%d\n",sizeof(char));//1字节
printf("%d\n",sizeof(int));//4字节
printf("%d\n",sizeof(float));//4字节
printf("%d\n",sizeof(double));//8个字节输出p1,也就是a的地址
puts("1------------------------------------------");
int a = ;//定义一个整型变量a,并赋值为10
int *p1 = &a;//定义一个指针*P1,赋值为变量a的地址,
char *p2 = p1;//定义一个字符变量p2,赋值为p1的地址
printf("%d\n",p1);//输出p1,也就是a的地址(2686776)
//运算要根据类型
printf("%d\n",p1+);//输出4210696,也就是2686776+4,因为p1是int类型4字节,所以加4
printf("%d\n",*p1);//带*号的意思是输出p1里面的内容,10
printf("%d\n",*p2);//
puts("2------------------------------------------");
int code[] = { ,,,,};//定义一个数组
//结论:数组内容值默认为0
printf("%d\n",code[]);//输出数组的第5个值,但是数组只有第4个,数组有定义10个,那么数组内容默认为0
//结论:数组名也是数字首地址
printf("%d\n",code);//求数组名的地址 2686732 发现一样的
printf("%d\n",&code[]);//求数组的第一个数字的地址 2686732
//指针运算要根据指针的类型
printf("%d\n",code+);//求数组加一的地址,输出2686732+4 printf("%d\n",*(code+));//求数组第三个数字的值,3
*(code+) = ;//(code+2)是一个地址,*(code+2)是内容,现在把0赋值为里面的内容
printf("%d\n",*(code+));//
puts("3------------------------------------------");
int d = ;
reset(d);//函数的调用
//结论:函数的独立性,
printf("%d\n",d);//
reset2(&d);//取地址
//使用指针的方式突破函数壁垒
printf("%d\n",d);//0
//什么是返回值
int e = add(,);
printf("e = %d\n",e);//
int result = ;//??
//指针的方式计算结果
add_by_point(,,&result);
printf("result = %d\n",result);//
puts("4------------------------------------------");
printf("student结构体字节数 = %d\n",sizeof(struct student));//4+4+20=28
struct student kinson = //结构体赋值
{
,,"kinson"
};
printf("%d\n",sizeof(kinson));//
printf("%d\n",&kinson);//取结构体名kinson的地址2686692
//结构体指针运算根据指针的类型来判断
printf("%d\n",(&kinson+));//2686692+28=2686720
//结构体的地址就是第一个成员的地址
printf("%d\n",&kinson.age);//2686692
//结构体成员的地址是连续的
printf("%d\n",&kinson.weight);//
printf("%d\n",&kinson.name);//2686700 //printf("%d\n",kinson.name);
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return EXIT_SUCCESS;
}
void reset(int i)//定义一个子函数
{
i = ;//赋值i=0;
}
void reset2(int* p)//定义一个指针函数
{
*p = ;//指针p的内容是0
} int add(int i,int j )//定义一个子函数,什么是返回值要用
{
/*
变量的生命周期
*/ int q = i+j;
return q;
}
void add_by_point(int x,int y,int *result)//指针函数要用
{
int r = (x + y);
*result = r;
} void struct_caculate(struct student *p)
{ p->name = "kinson2"; }

STM32——C语言知识点:指针、结构体的更多相关文章
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- GO学习-(13) Go语言基础之结构体
Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. ...
- 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)
为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...
- Go语言基础之结构体
Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在G ...
- C语言第九讲,结构体
C语言第九讲,结构体 一丶结构体的定义 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...
- Go-常识补充-切片-map(类似字典)-字符串-指针-结构体
目录 Go 常识补充 Go 命名 打印变量类型科普 _ 关键字 命名规范相关 包目录规范 切片 多维切片 切片初始化的方法 多维切片初始化 切片删除元素(会略微影响效率 ,少用) copy 函数 打散 ...
- C语言中的结构体,结构体数组
C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
- 4-17疑难点 c语言之【结构体对齐】
今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...
- C 语言实例 - 使用结构体(struct)
C 语言实例 - 使用结构体(struct) C 语言实例 C 语言实例 使用结构体(struct)存储学生信息. 实例 #include <stdio.h> struct student ...
- Verilog缺少一个复合数据类型,如C语言中的结构体
https://mp.weixin.qq.com/s/_9UsgUQv-MfLe8nS938cfQ Verilog中的数据类型(Data Type)是分散的,缺少一个复合数据类型:把多个wire, r ...
随机推荐
- Chrome开发者控制台操作教程
1清空控制台 在控制台下有个clear console的按钮,点击的时候会清空控制台. 清空控制台 2让Chrome中的页面可编辑 有的时候我们需要临时改变页面上的文字,图案等信息,一种常见的方法是 ...
- 2017-2018-2 20165328 实验三《敏捷开发与XP实践》实验报告
一.实践-1: 要求:参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题. 在ID ...
- UEditor黑白名单配置
在网上找了很多,都不对.自己尝试,代码如下: 在new UEditor之前加上: Object.assign(window.UEDITOR_CONFIG.whitList, { filling: [' ...
- SpringMVC - 1.快速入门
1. HelloWorld 步骤: 加入 jar 包 mons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RE ...
- 将现有项目添加到TFS中
假设在Projects文件夹中有一个名为WpfApplication1的项目需要添加到TFS. 我们可以这样做: 1.打开视图->团队资源管理器,点击管理连接,在弹出的窗口中选择服务器和团队项目 ...
- java keystore
JAVA有一个keystore用来存放私钥和证书,该文件是伴随JDK默认存在的,路径默认是/lib/security/cacerts,默认密码是changeit,实际上空密码也可以直接访问 其中cac ...
- mysql inner jion多表查询
select vtiger_users.id, vtiger_users.user_name, vtiger_role.rolename FROM vtiger_users inner join vt ...
- 背包的一些idea
题解: 给出n个物品,每次能使用l-r之间的物品,问能不能表示出k,m次询问 k<=100,m,n=1e5 想了线段树分治 发现是k^2(n+m)logn claris告诉我可以直接分治 我们对 ...
- alpha冲刺8/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之8 团队部分 后敬甲(组长) 过去两天完成了哪些任务 首页重新设计 课程时间线确定 答辩准备 接下来的计划 ...
- c_数据结构_链表
#include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 ty ...