C语言指针

0,一维数组

    int a[]={3,4,5,7,3,6,6};
    int *p=a;
    printf("%p\n", p);
    printf("%p\n", a);
    printf("%p\n", &a[0]);

    
    printf("%d\n", p[0]);
    printf("%d\n", a[0]);

输出:

0x7ffeefbff5e0
0x7ffeefbff5e0
0x7ffeefbff5e0
3
3

 

1,二维数组

 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
 int (*p)[4]=a;//指针p指向了一个二维的数组
    
    printf("%p\n", a);
    printf("%p\n", &a[0]);
    printf("%p\n", a[0]);
    printf("%p\n", &a[0][0]);
    printf("%p\n", *p);
    printf("%p\n", p);

输出:

0x7ffeefbff5d0
0x7ffeefbff5d0
0x7ffeefbff5d0
0x7ffeefbff5d0
0x7ffeefbff5d0
0x7ffeefbff5d0

分析图:

 

2,指向字符串的指针与字符数组

 2.1指向字符串的指针

char*ptr="zfbanzhangzaiyiqi";

    printf("%p\n", ptr);
    printf("%s\n", ptr);

输出:

0x100000f9a
zfbanzhangzaiyiqi

分析:

"zfbanzhangzaiyiqi"是放在常量区的无法通过ptr指针去修改"zfbanzhangzaiyiqi"这个字符串

ptr指向了常量字符串"zfbanzhangzaiyiqi"的首地址,所以可以通过%s将全部字符串输出来

 

2.2字符数组

char str[]="zfbanzhangzaiyiqi";

    printf("%s\n", str);

输出:

zfbanzhangzaiyiqi
分析:str在内存空间给zfbanzhangzaiyiqi是分配空间的,放在栈中的,所以可以通过str去修改"zfbanzhangzaiyiqi"

 

3,char型指针数组

    char*name[]={
        "aaaa","bb","ccc"
    };
    

    printf("%p\n", name);
    printf("%p\n", &name[0]);

    printf("%p\n", name[0]);//name[0]里面的内容是“aaaa”的首地址
    printf("%p\n", &name[0][0]);//name[0]指向了name[0][0]的首地址
    printf("%s\n", name[0]);//name[0]里面的所有字符串

输出:

0x7ffeefbff5f0
0x7ffeefbff5f0
0x100000f98
0x100000f98
aaaa

 

4,分析指针变量的类型以及指针指向的类型

    int a=10;
    int *p=&a;
    printf("%p\n", p);
    printf("%d\n", *p);

输出:

0x7ffeefbff5fc
10

分析:

指针p的类型:int*p中去除p后int*就是指针的类型即指向整型的指针

指向的类型:int*p中去除*p后就是指向的类型即整型

 

5,const关键字及使用

    int a=10;
    int *const p=&a; 代表常量指针,指针的指向不能变,但a变量可以改变

    const int * p=&a;  int const * p=&a; 或者代表指向常量的指针,指针的指向可以变,但a变量不可以改变

 

6,函数指针与指针函数

函数指针:指向函数类型的指针变量

先定义一个函数

int sum(int a,int b){

 

}

定义函数指针直接拷贝函数声明

int sum(int a,int b),然后将函数名替换int (*p)(int a,int b),a和b这里可以省略

然后指针初始化

p=sum;//p指向了sum函数

int result=p(23,45)//用函数指针间接的调用函数

例:(可类比第0条中指向一维数组指针的使用)

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

 int (*p)(int a,int b);
    p=sum;

        printf("%p\n", p);
        printf("%p\n", sum);
        printf("%p\n", &sum);
        printf("%d\n", sum(2,3));
        printf("%d\n", p(2,3));

输出:

0x100000eb0
0x100000eb0
0x100000eb0
5
5
 

 

 

指针函数:函数的返回值是指针
 

 

 

 

 

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值