/*
============================================================================
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. MySQL数据库权限分类

    一.权限表 mysql数据库中的3个权限表:user .db. host 权限表的存取过程是: 1)先从user表中的host. user. password这3个字段中判断连接的IP.用户名.密码是 ...

  2. 停止Monkey

    adb shell top | grep monkey adb shell kill id

  3. linux:安装并使用activeMQ

    1.下载安装包:curl -O https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz 2. ...

  4. social psychology 10th David G. Myers

    Social psychology is a science that studies the influences of our situations, with special attention ...

  5. pp 总结二

    1. return false   ES6函数的扩展:箭头函数  数组 arr.map()   arr.filter() <!DOCTYPE html> <html lang=&qu ...

  6. springboot中使用拦截器、监听器、过滤器

     拦截器.过滤器.监听器在web项目中很常见,这里对springboot中怎么去使用做一个总结. 1. 拦截器(Interceptor)   我们需要对一个类实现HandlerInterceptor接 ...

  7. 求自然数幂和 B - The Sum of the k-th Powers CodeForces - 622F

    题解: 很多方法 斯特林数推导略麻烦但是不依赖于模数 代码: 拉格朗日插值 由于可以证明这是个K+1次多项式于是可以直接用插值 #include <bits/stdc++.h> using ...

  8. ANGULAR6.x - 错误随笔 - Can't bind to 'formGroup'

    formGroup:错误 Can't bind to 'formGroup' since it isn't a known property of 'form'. (" 原因: 在使用for ...

  9. markdown 语法小结

    1 标题 # 一级标题 ## 二级标题 2  字体加粗和斜体 *斜体* **加粗** 3.引用 > 4.换行 空行 或两个空格+tab 5.无序列表 + 第一个 + 第二个 - 第一个 - 第二 ...

  10. HTTP.sys远程执行代码漏洞

    远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞. http://bbs.safedog.cn/thre ...