指针

本文主要围绕C语言展开,介绍了指针的多种使用方式,包括用指针输出地址、访问数组和二维数组,还讲解了随机数函数srand和rand的配合使用,以系统时间作为随机数种子。此外,展示了用指针数组随机切换行顺序,以及函数指针调用函数的示例。

%p 十六进制输出指针地址
%x 普通十六进制
%d 十进制


int i=10,j=20;
int *p;
p=&i;//给指针赋值
*p+=10;//给i加10
printf(“x=%d\t”,*p);//输出i
p=&j;
*p+=30;
printf(“y=%d\n”,*p);


int a[10],*p;
int max;
for(p=a;p<a+10;p++)//利用指针循环访问数组
scanf("%d",p);//利用指针向数组输入数据
max=a[0];
for(p=a+1;p<a+10;p++)
if((*p)>max)
max=*p;
printf("%d\n",max);


int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i,j;
for(j=0;j<3;j++)
for(i=0;i<4;i++)
printf("%d “,((a+j)+i));//访问二维数组的值
或者
int p[3]={a[0],a[1],a[2]};//指针数组定义二维数组
for(j=0;j<3;j++)
for(i=0;i<4;i++)
printf("%d ",
(p[j]+i));//访问二维数组的值
访问第三行
p=a+2;或者p=a[2];//指向第三行
for(j=0;p<a+3;p++)
for(i=0;i<4;i++)
printf(”%d ",(*p)[i]);//访问二维数组的值


srand(time(NULL)):
这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至于NULL这个参数。只有设置成NULL才能获得系统的时间!


用指针数组随机切换行顺序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};//数组初始顺序
int order[3]={0,1,2};//班级初始顺序
int p[3];//指向新顺序的数组
int i,j;
int no,temp;
srand(time(NULL));//NULL大写
for(i=2;i>=0;i–)
{
no=rand()%(i+1);//产生0~i之间的随机数,前i排随机换
temp=order[no];
order[no]=order[i];
order[i]=order[no];
}
for(i=0;i<3;i++)
p[i]=a[order[i]];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d ",
(p[i]+j));
printf("\n");
}


#include<stdio.h>
int* test(int x[])
{
return x;
}
int main()
{
int y[11];
int i;
for(i=0;i<11;i++)
y[i]=i;
y[i]=0;
y[11]=test(y);
for(i=0;i<11;i++)
printf("%d",y[i]);
return 0;
}
或者
#include<stdio.h>
int* test()
{
static int y[11];//需要加上static,否则y为临时变量,无法返回继续使用
int i;
for(i=0;i<11;i++)
y[i]=i;
return y;
}
int main()
{
int p;
int i;
p=test();
for(i=0;i<11;i++)
printf("%d",
(p+i));
return 0;
}


#include<stdio.h>
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int (*p)(int,int)=&max;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",p(p(a,b),c));
return 0;
}

【评估多目标跟踪方法】9个高度敏捷目标在编队中的轨迹和测量研究(Matlab代码实现)内容概要:本文围绕“评估多目标跟踪方法”,重点研究9个高度敏捷目标在编队飞行中的轨迹生成与测量过程,并提供完整的Matlab代码实现。文中详细模拟了目标的动态行为、运动约束及编队结构,通过仿真获取目标的状态信息与观测数据,用于验证和比较不同多目标跟踪算法的性能。研究内容涵盖轨迹建模、噪声处理、传感器测量模拟以及数据可视化等关键技术环节,旨在为雷达、无人机编队、自动驾驶等领域的多目标跟踪系统提供可复现的测试基准。; 适合人群:具备一定Matlab编程基础,从事控制工程、自动化、航空航天、智能交通或人工智能等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多目标跟踪算法(如卡尔曼滤波、粒子滤波、GM-CPHD等)的性能评估与对比实验;②作为无人机编队、空中交通监控等应用场景下的轨迹仿真与传感器数据分析的教学与研究平台;③支持对高度机动目标在复杂编队下的可观测性与跟踪精度进行深入分析。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注轨迹生成逻辑与测量模型构建部分,可通过修改目标数量、运动参数或噪声水平来拓展实验场景,进一步提升对多目标跟踪系统设计与评估的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值