/*
============================================================================
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. selenium 无法启动IE

    解决办法是IE选项设置的安全页中,4个区域的启用保护模式的勾选都去掉(或都勾上)

  2. bat 直接编译vs项目

    直接项目.sln拖到bat上: @ECHO OFFset path=%~dp1%~nx1 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.e ...

  3. document.getElementsByClassName() 原生方法 通过className 选择DOM节点

    <div id="box"> <div class="box">1</div> <div class="bo ...

  4. 论文阅读笔记二-ImageNet Classification with Deep Convolutional Neural Networks

    分类的数据大小:1.2million 张,包括1000个类别. 网络结构:60million个参数,650,000个神经元.网络由5层卷积层,其中由最大值池化层和三个1000输出的(与图片的类别数相同 ...

  5. expect 安装 salt 客户端

    #!/bin/bash for i in $(cat ./host.txt) do echo $i > ./tmp.txt HOSTNAME=$(cut -d ':' -f1 ./tmp.txt ...

  6. rabbitmq3.7.5 centos7 集群部署笔记

    1. 准备3台 centos服务器  192.168.233.128    192.168.233.130    192.168.233.131 防火墙放开 集群端口, 这里一并把所有rabbitmq ...

  7. EF批量插入数据(Z.EntityFramework.Extensions)

    EF用原生的插入数据方法DbSet.ADD()和 DbSet.AddRange()都很慢.所以要做大型的批量插入只能另选它法. 1.Nugget 2.代码 using EF6._0Test.EF; u ...

  8. python全栈开发day75-用户注册页面ajax实现,用户头像上传、预览、展示

    一.昨日内容回顾 1. 内容回顾 1. BBS项目登录 1. 登录用form组件和auth模块 1. form组件做校验很方便 2. auth模块 - authenticate(username=xx ...

  9. Python_python内置加密模块

    数据加密: 对称加密:数据加密和解密使用相同的密钥,主要解决数据的机密性(DES,AES) 非对称加密(公匙加密):数据加密和解密使用的不同密钥,主要用于身份的验证(DSA,RSA) 单向加密:只能加 ...

  10. php 操作数据库

    $datetoday = date('Y-m-d'); $datetime = $thedate; $data_info = $data; $db = array( 'dsn' => 'mysq ...