关于函数指针数组与返回数组指针的函数

本文介绍了两种指针的应用场景:一是函数指针数组,用于存储指向不同函数的指针;二是返回数组指针的函数,用于操作数组。通过具体示例详细解释了这两种指针的定义及使用方法。

 

关于函数指针数组与返回数组指针的函数
2007-08-15 08:34

int (*a[])(int);
int (*p())[10];

第一种情况为数组里面是函数指针的情况,因为(int (*)(int))是一个强制转换方式, 将里面的a[]这个数组转换成了一个函数指针的数组, 并且该函数是一个带一个整型变量,并且返回一个整型的函数.
第二种情况为函数返回的为指向一个一维数组的指针的情况. 因为(int (*)[10])将其强制转换成了一个指针,而该指针则是一个指向一维数组的指针.
分别举两个例子进行说明:
对于第一种函数指针数组的情况,如下:
#include<stdio.h>
int fun(int a)
{
         return a+1;
}
int main()
{
         int (*p[10])(int);
         int i;
         p[0] = fun;
         i = (p[0])(10);
         printf("i=%d/n", i);
         return 0;
}
p[10]为一个指针数组,而该指针数组里面的值为函数指针类型.让p[0]指向fun()函数.然后再进行调用,就可以调用到fun()这个函数了.

对于第二种返回数组指针的函数,如下:
#include<stdio.h>
#include<stdlib.h>
int (*p())[10]
{
int (*m)[10];
int i;
m = (int (*)[10])calloc(10, sizeof(int));
if (m == NULL)
{
   printf("calloc error/n");
   exit(1);
}
for (i = 0; i < 10; i++)
   *(*m+i) = i+1;
return m;
}

int main()
{
int (*a)[10];
int i;
a = p();
for (i = 0; i < 10; i++)
   printf("%d ", *(*a+i));
printf("/ndone/n");
return 0;
}

其实int (*m)[10];这种方式一般是用来指向一个二维数组的,例如
int b[4][10];
int (*m)[10] = b;
其指向二维数组中的一维.
使用*(*(m+i)+j);这种方式就可以访问b[i][j]这个元素.而上面的是使用这种方式来指向一个一维数组,同样也是一样的.只是前面的*(m+i)中的i变为0了.因为只有一维大小.即
int a[10];
int (*m)[10] = &a;
就使得m指向了a这个数组了.而平时所用的int *p = a;只是让p指向了a的第一个元素.比前面的指向一维数组的指针少了一维.前面的m+1跳过的是10个整型的长度.而后面的p+1则只是跳过了1个整型的长度.

 

 

原文出处:http://hi.baidu.com/phps/blog/item/38bec9bf93b3470818d81f78.html

5G NR峰值速率计算表5G NR典型下行峰值速率估算Update by Michael @ 15th June 2020 prepared by cottage98@163.comLTEID参数配置操作SCS(30K)SCS(60K)SCS(120K)SCS(30K)SCS(60K)SCS(120K)SCS(15K)1总带宽(BW)MHz下拉选择100100100100100100202子载波带宽(SCS)KHz下拉选择30601203060120153每子帧时隙数自动计算24824814每时隙符号数固定值141414141414145PRB个数自动计算27313566273135661066单PRB包含子载波数量固定值121212121212127帧配置选项下拉选择2.5ms单周期2.5ms单周期2.5ms单周期2.5ms双周期2.5ms双周期2.5ms双周期5ms单周期8时隙配置自动计算DDDSUDDDSUDDDSUDDDSUDDSUUDDDSUDDSUUDDDSUDDSUUDDDDDDDSUU9特殊子帧配比自动计算10:2:210:2:210:2:210:2:210:2:210:2:26:4:410下行符号占比自动计算74.29%74.29%74.29%64.29%64.29%64.29%74.29%11下行资源开销设定值14.00%14.00%14.00%14.00%14.00%14.00%14.00%12每秒下行符号数自动计算6814473167395888658982025897193158323888570278021322956313MIMO层数(MS=2T4R)Rank=4下拉选择444444414调制阶数(256QAM=8)下拉选择256QAM256QAM256QAM256QAM256QAM256QAM256QAM15编码类型下拉选择MCS22MCS25MCS25MCS27MCS27MCS27MCS2716编码码率(MCS27最高92.58%)自动计算73.63%86.43%86.43%92.58%92.58%92.58%92.58%17误码率BLER(功率控制收敛值)自动计算10.00%10.00%10.00%10.00%10.00%10.00%10.00%18理论峰值速率(Gbps)自动计算1.241.441.411.351.341.310.3019最短可调度时隙时间(ms)自动计算0.50.250.1250.50.250.125120RTT时延(ms)自动计算4.14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值