/*
============================================================================
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语言知识点:指针、结构体的更多相关文章

  1. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  2. GO学习-(13) Go语言基础之结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. ...

  3. 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)

    为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...

  4. Go语言基础之结构体

    Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在G ...

  5. C语言第九讲,结构体

    C语言第九讲,结构体 一丶结构体的定义 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种 ...

  6. Go-常识补充-切片-map(类似字典)-字符串-指针-结构体

    目录 Go 常识补充 Go 命名 打印变量类型科普 _ 关键字 命名规范相关 包目录规范 切片 多维切片 切片初始化的方法 多维切片初始化 切片删除元素(会略微影响效率 ,少用) copy 函数 打散 ...

  7. C语言中的结构体,结构体数组

    C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...

  8. 4-17疑难点 c语言之【结构体对齐】

    今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...

  9. C 语言实例 - 使用结构体(struct)

    C 语言实例 - 使用结构体(struct) C 语言实例 C 语言实例 使用结构体(struct)存储学生信息. 实例 #include <stdio.h> struct student ...

  10. Verilog缺少一个复合数据类型,如C语言中的结构体

    https://mp.weixin.qq.com/s/_9UsgUQv-MfLe8nS938cfQ Verilog中的数据类型(Data Type)是分散的,缺少一个复合数据类型:把多个wire, r ...

随机推荐

  1. Allegro PCB Design GXL (legacy) 使用slide推挤走线,走线的宽度就发生改变的原因

    Allegro PCB Design GXL (legacy) version 16.6-2015 使用slide推挤走线,走线的宽度就会发生改变. 后来发现是因为约束管理器(Constraint M ...

  2. GnuPGP介绍

    PGP(Pretty Good Privacy的首字母):PGP公司的加密.签名工具套件,使用了商业版本的IDEA算法,并集成了有商业版权的PGPdisk工具. GnuPG(GNU Privacy G ...

  3. 俺也会刷机啦--windows7下刷android

    刷机很多人都会,本文只为像我这种入门的朋友而写的. 风险提示: 1. SD卡数据极可能会丢失(我这次就全丢了). 2. 升级失败. (俺的)环境说明: windows7 专业版64位 cmd命令行工具 ...

  4. GoLang函数参数的传递练习

    春节买的GO方面的书,看了一次.现在撸一些代码,作为练习. // Copyright © 2019 NAME HERE <EMAIL ADDRESS> // // Licensed und ...

  5. python的学习和使用

    1.python的官网:https://www.python.org/ Python简介: .Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. .Python 的设计具有 ...

  6. MySQL基础一(CMD使用)

    概述 MySQL因可移植行高,安装简单小巧等优点被更多的开发者喜爱.执行MySQL的指令的方式有2种方式,方式一.MySQL的客户端软件比如navicat :方式二.通过Cmd命令: CMD命令执行方 ...

  7. [转]通过Spring Boot三分钟创建Spring Web项目

    来源:https://www.tianmaying.com/tutorial/project-based-on-spring-boot Spring Boot简介 接下来我们所有的Spring代码实例 ...

  8. [转]基于国家标准的 EndNote 输出样式模板 ----直接用endnote导入到word,不用自己一个个改参考文献了

    EndNote 相当于一个数据库,将添加/导入的文献存档.需要引用文献的时候就从中选择一个插入到文档中,EndNote 会自动给你编号.在文档末尾建立相应的参考文献列表.但是各种杂志.单位要求的文献著 ...

  9. django 视图函数返回queryset对象或日期对象至浏览器ajax接收的写法

    class MyDateTimeEncode(json.JSONEncoder): def default(self, o): if isinstance(o, datetime): return o ...

  10. SPOJ LCS2 - Longest Common Substring II 字符串 SAM

    原文链接http://www.cnblogs.com/zhouzhendong/p/8982484.html 题目传送门 - SPOJ LCS2 题意 求若干$(若干<10)$个字符串的最长公共 ...