c语言解析系列(5)指针

C语言指针详解

F指针

地址形象的称为指针。一个已经定义的变量,想去引用它,有两种方式。一个是通过变量名,一个是通过访问该变量所在的地址。这就好比一栋房子的每个房间一样,你可通过门牌号找到这个房间的,对房间的东西进行操作,这个门牌号就是计算机给内存分配的地址,这是一种间接地方式。另外的方式就是直接找到这个房子的东西进行操作,这是一种直接的方式。

定义指针变量

类型名 *指针变量名

例:int *a

 想引用一个指针变量 ,可以采用这样的方式

 Int a=10

 Int *b=&aint *bb=&a

Printf(“%d”,*b);

一般就是先定义一个变量a,再定义一个同类型的指针变量b,给指针变量b一个指向b=*a即可。

下面的这个例子通过引用指针变量求最大值

#include<stdio.h>

int main()

{

   int a=10,b=5,*c,*d;

     c=&a;//给指针一个指向

     d=&b;

 if(*c>*d)

   printf("%d",*c);//输出该指针指向的内容

 else

  printf("%d",*d);

 getch();  

 return 0;   

}

指针其实给了我们很大的方便,给了我们随时随地取用变量的方法,就是找到存放变量的地址。

指针可以作为函数的参数,返回值一个是指针,一个是普通变量,对于字符型数组也是如此。


int *max(int *a,int *b)

{

 if(*a>*b)

  return a;

  else

  return b;   

}

int main()

{

   int a=10,b=5,*c,*d;

     c=&a;

     d=&b;

  c=max(c,d);

  printf("%d",*c);

 getch();  

 return 0;   

}

 

#include<stdio.h>

int max(int *a,int *b)

{

 if(*a>*b)

  return *a;

  else

  return *b;   

}

int main()

{

   int a=10,b=5,*c,*d;

     c=&a;

     d=&b;

  a=max(c,d);

  printf("%d",a);

 getch();  

 return 0;   

}


在下面的例子中还涉及到指针数组和数组指针的区别。指针数组一般是指向多维数组的。

指针数组:类型名 *  数组名 [数组长度]Int * p[4],[]的优先级比*高,所以这是一个指针数组,指向多维数组。

数组指针:类型名 *数组名 [数组长度] ,例int * p[4]

指针也可以多重的,这主要和多维数组有联系,这需要理解指针的跨步,即一步平移多少个字节。以二维数组为例,说明这个问题,这也是通过指针引用数组的例子。

#include<stdio.h>

int main()

{

 int a[2][3]={1,2,3,4,5,6};

 int *b,i,j;

 b=*a;//指针指向数组起始地址

 //多重指针每次移动是跨行的,

  for(i=0;i<2;i++)

  printf("%d\t",*(*(a+i)));

  //要想输出数组的每个数据要采用以下的方法

  printf("\n");

  for(i=0;i<2;i++)

  {

   for(j=0;j<3;j++)

   {

    printf("%d\t",*(*(a+i)+j));               

   }               

  }

 getch();

 return 0;   

}

通过指针引用字符串。

#include<stdio.h>

int main()

{

   int i;

 char a[]="qwertyuiop";

 char *b;

 b=a;

 for(i=0;a[i]!='\0';i++,b++)

 printf("%c",*b);

 getch();

 return 0;   

}

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值