首页 > 其他分享 >C高级(学习)2024.8.2

C高级(学习)2024.8.2

时间:2024-08-02 18:59:43浏览次数:17  
标签:函数 val 2024.8 高级 学习 int 格式 共用 函数指针

目录

1.指针函数

概念

格式

2.函数指针

概念

格式

基本用法

3.函数指针数组

概念

格式  

4.共用体

格式

定义共用体变量

特性

5.枚举

定义

格式

6.存储类型

(1)auto

(2)static

(3)extern

(4)register

7.条件编译

(1)根据宏是否定义

(2)根据宏值

(3)防止头文件重复包含(放在头文件中)

1.指针函数

概念

        本质是函数,返回值是指针

格式

数据数据 *  函数名(形参)
{
        函数体
        return  地址;//失败则返回NULL
}

2.函数指针

概念

        本质是指针,指向的是函数

格式

数据类型 (*指针名)(参数列表);
数据类型: 与指向函数的返回值类型保持一致
参数列表:与指向函数的参数列表保持一致

基本用法

1.用作函数指针

int add(int a, int b)
{
        return a + b;
}

int main()
{
        int (*p)(int, int);
        p = add;
        printf("%d\n", p(2, 3));

}

2.函数指针作为另一个函数的参数,实现接口重用-->多态

int add(int a, int b)
{
        return a + b;
}

int test(int (*p)(int ,int))
{
        printf("test:%d\n",p(3,4));
        return 0;
}

int main()
{
        test(add);   

        return 0;

}

3.函数指针数组

概念

        本质是数组,数组中存放的是函数指针

格式  

数据类型 (*数组名[元素个数])(参数列表);
数据类型:和指向函数的返回值类型一致
参数列表:和指向的函数的参数列表一致
例如:int (*arr[2])(int,int)={函数名,函数名}

4.共用体

        所有成员变量共用一块地址空间

格式

union   共用体名
{
        成员列表;
};

定义共用体变量

union  共用体名字  变量名;
union  value
{
        int a;
        char b;
};
union value val;
        val.a=10;
        val.b='a';

特性

1)所有成员共用同一块地址空间
2)以最后一次赋值为内存中的实际数据
3)共用体的大小为成员中类型最大的数据的大小

共用体测大小端

union value val;
val.a = 0x12345678;
if(val.b == 0x78)
        printf("小端\n");
else if(val.b == 0x12)
        printf("大端\n");

5.枚举

定义

        一种构造数据类型,用于声明一组常数

格式

enum   枚举类型名
{
        常数1,
        常数2,
};

注意:没有赋初值时默认从0开始,向后依次递增

6.存储类型

(1)auto

        自动型,修饰局部变量,存放在栈区(一般省略)

(2)static

        静态型,可以修饰局部变量和全局变量,也可以修饰函数

注意:        

1.存放在静态区/全局区,.bss(未初始化的全局变量和静态变量)   .data(初始化的全局变量和静态变量)

2.初始值默认为0,只初始化一次

3.限制作用域 ,修饰全局变量被限制仅能在本文件中使用,修饰局部变量,作用域被限制在本函数中,但会延长其生命周期

4.修饰函数,被限制仅能在本文件中使用

(3)extern

        外部引用:可以引用其他文件中的全局变量和函数,在本文件中使用

例如:有file1.c和file2.c两个文件

file1.c

#include<stdio.h>
int n=5;
void fun()
{
        printf("hello\n");
}

file2.c
#include<stdio.h>
extern int n; //外部引用file1.c中的全局变量n
extern void fun();//外部引用file1.c中的函数fun
int main()
{
        fun();
        printf("n=%d\n",n);
        return 0;
}

(4)register

        寄存器类型,由于寄存器数量较少,申请不到空间时和auto一样

7.条件编译

(1)根据宏是否定义

#define  宏名

#ifdef  宏名
        /*code1*/ 
#else
        /*code2*/ 
#endif

        执行顺序:判断宏是否定义,如果定义了就编译code1,否则编译code2

(2)根据宏值

#define  宏名  值

#if  宏名
        /*code1*/
#else
        /*code2*/
#endif    

        执行顺序:判断宏的值是否为0,如果不为0编译code1,否则编译code2

(3)防止头文件重复包含(放在头文件中)

#ifndef    宏名
#define   宏名
        /*code*/
#endif

标签:函数,val,2024.8,高级,学习,int,格式,共用,函数指针
From: https://blog.csdn.net/qq_60450758/article/details/140872451

相关文章

  • c语言学习 volatile __attribute__ const
    1volatile在C语言中,volatile是一个类型修饰符,用于告诉编译器某个变量的值可能会被外部因素改变,从而避免编译器对该变量进行优化。这在多线程编程或硬件编程中非常重要。用法volatileintmyVar;何时使用volatile硬件寄存器:当变量映射到某个硬件寄存器。中断服务例......
  • PgStatement的executeCachedSql(String sql, int flags, String @Nullable [] column
    方法代码如下:privatebooleanexecuteCachedSql(Stringsql,intflags,String@Nullable[]columnNames)throwsSQLException{//第一部分PreferQueryModepreferQueryMode=connection.getPreferQueryMode();booleanshouldUseParameterized=false;......
  • SpringCloud入门学习笔记(四)
    Sentinel篇 SpringCloud入门学习笔记(一)-CSDN博客SpringCloud入门学习笔记(二)-CSDN博客SpringCloud入门学习笔记(三)-CSDN博客前言 在互联网应用过程中,有很多的高并发访问场景,类似于双十一这种活动,特点是访问量剧增,访问量超出系统所能处理的最大并发数。 如果没有保护机......
  • SpringCloud入门学习笔记(三)
    Nacos篇SpringCloud入门学习笔记(二)-CSDN博客SpringCloud入门学习笔记(一)-CSDN博客前言  上篇中提到服务消费者要去调用多个服务提供者构成的集群,此时需要一个三方软件来同步更新提供者的地址信息,同时供服务消费者来此处访问地址,为了解决这类问题,就需要引入服务注册组件(功......
  • 简要说一下关于实现整个深度学习项目的流程
    我们以识别生物信号为例子,其他类似与图像、文本和目标/故障检测的同样适用1.信号预处理;首先要将得到的生物信号进去噪音去除,另外所有的生物信号由于采样时间不同可能长度并不一样,这时候你需要统一长度。2.特征工程;你需要对所有的经过预处理并且将要输入神经网络的信号提取特......
  • ximo基础脱壳教程的脱壳学习记录
    之前遇到壳直接脚本自动化处理了,现在初步学习一下手脱壳。(中间一直用的x32dbg,后来有些壳换od脱了)参考教程1、手脱UPX壳查壳方法1:单步跟踪就是一直单步走,如果是向下跳转就跳,如果是向上跳转就不跳,执行原本跳转的下一句。比如这里向上跳转就不跳,直接在5790ab处按f4跳到这即可......
  • 科大讯飞T30 UItra AI学习机和科大讯飞p30对比评测
    科大讯飞T30UItraAI学习机科大讯飞T30UItraAI学习机内置了星火大模型,主打“AI一对一”,支持AI答疑辅导、AI提优课、幼小初高全科提升等功能。其内置的屏幕尺寸为14.7英寸,分辨率高达3K,刷新率为120Hz,PPI为247。此外,该产品还配备了行业首款星闪AI手写笔,并且支持超万级压感和磁吸......
  • 科大讯飞T30 UItra AI学习机 怎么样 值得买吗
    科大讯飞学习机T30Ultra搭载了全球首创的类自然光+微纳米类纸护眼屏技术,不仅模拟自然光线,减少视觉疲劳,更以3K超高清分辨率和247PPI的极致细腻,为用户带来前所未有的视觉盛宴。配合120Hz高刷新率,无论是阅读、学习还是观看视频,都能享受到丝滑流畅的视觉享受。同时,作为行业首款配备......
  • 科大讯飞AI学习机x3pro和科大讯飞T30 UItra对比评测
    科大讯飞T30UItraAI学习机科大讯飞T30UItraAI学习机内置了星火大模型,主打“AI一对一”,支持AI答疑辅导、AI提优课、幼小初高全科提升等功能。其内置的屏幕尺寸为14.7英寸,分辨率高达3K,刷新率为120Hz,PPI为247。此外,该产品还配备了行业首款星闪AI手写笔,并且支持超万级压感和磁吸......
  • 科大讯飞学习机T30 UItra和科大讯飞学习机LUMIE10区别对比
    科大讯飞T30UItraAI学习机科大讯飞T30UItraAI学习机内置了星火大模型,主打“AI一对一”,支持AI答疑辅导、AI提优课、幼小初高全科提升等功能。其内置的屏幕尺寸为14.7英寸,分辨率高达3K,刷新率为120Hz,PPI为247。此外,该产品还配备了行业首款星闪AI手写笔,并且支持超万级压感和磁吸......