指针问题?若不运用数组,指针还有用吗?

不用数组时,我怎么感觉用不用指针都行,指针真的那么有用吗?
最好举例说明
如何学好指针,满意的追加高分
最新回答
ぇ气

2024-05-17 14:33:49

我也举个例子,一个函数最多返回1个值,你想返回2个值怎么办?
int A(int a,int b)
{
a++;
return b+1;
}
这个时候,你想用a和函数返回值(b+1)来取的2个返回值,但是由于作用域,你会发现函数外面的a还是原来的值,改成下面的,就可以了
int A(int *a,int b)
{
*a++;
return b+1;
}

----------------------------------
你做了个机器人程序,这个机器人是有AI的,而且这个机器人的AI是可以变化的,那么我们会定义:
void robot()/*机器人的运动函数*/
{
{
/*AI*/
}
/*其他运动代码*/
}
你写出了一个非常聪明的机器人,现在你的老大,要你写个同样的笨蛋机器人出来,你怎么做?修改AI部分让他变傻?如果代码很复杂,你会迷失在你自己的代码里,你说把AI提取出来,写成一个函数,那么新AI是另一个函数,不就可以了码?但是,你还是要改动运动函数里面的调用吧,代码一多,你照样迷失~,怎么办(这里有XD会说,用class啊,你老大说,我们公司没有C++~~)那么你可以这么定义来解决问题:
void robot(void (*AI)())
{
*AI();
/*其他运动代码*/
}
这个时候你的聪明AI可以这么定义:
void ai1()
{
}
那个笨蛋可以这么定义:
void ai2()
{
}
在你的代码调用运动代码的时候,你需要一个聪明的机器人就可以这么调用:
robot(ai1);
笨蛋的那个就可以这又么用了:
robot(ai2);
这个说的高一点,就是后来接口的实现方式,说的差一点,就是把函数地址做参数,推广一下,所有的回调函数的实现都是这样的,再按个好名字:EVENT,就是伟大的事件驱动了..要卖钱?好,商业化的流行名字:委托~,这些看起来很高深的东西,其实底层,就是这么个小小的指针在起作用.
这样,你以后不关怎么改动,robot()本身可以不用动,这个,也是指针的好处,指针是很强大的东西,也是C里面最大的魅力(很多人看法完全相反呵呵),希望上面的描述能给LZ一点点启发呵呵
别离我

2024-05-17 15:04:46

指针用处就大了,字符串就是指针,如果你需要一个非常大的字符串,那么通常会用malloc分配一个空间存放。

另外使用C++的多态性和虚函数,可以实现很灵活的功能,这个属于深入编程内容,适用多态性和虚函数必须要使用指针。
笙歌白云上

2024-05-17 10:46:47

不行了,下面举一例
main()
{char *cp[6]={"red", "green", "blue", "white" , "yellow", "black" };
int i,j,k;
char *temp;
for(i=0;i<6;i++)
{k=i;
for(j=i+1;j<6;j++)
if(strcmp(cp[j],cp[k])<0) k=j;
if(k!=i)
{temp=cp[i];cp[i]=cp[k];cp[k]=temp;}
}
for(i=0;i<6; i++)
printf("\n%s",cp[i]); }


哥的名称亮瞎你的狗眼

2024-05-17 07:04:22

指针很有用的,其实指针就是地址.指针变量是个特殊变量,里面存放的是指针,也就是地址.
当你学过数据结构以后,就会知道用处了.
在C中,调用函数是用值传递的,所以无法返回变量.举个例子,在C中,如果要交换两数,如果不用指针怎么实现啊.没有办法实现.用指针可以这样.
void swap( int *x ,int *y)
{
int temp ;
temp = *x;
*x=*y;
*y=temp

}
我觉得潭浩强那本书不错.
有句话叫指针是C的精华,慢慢体会吧.
官方父亲

2024-05-17 10:53:02

编程编程再编程这是最好的办法,不会的也要天天想
指尖的岁月袅袅

2024-05-17 16:20:43

人们都说指针是C语言的灵魂,如果指针学好了,可以为以后的学习打下一个好的基础。数据结构,VC++,以后的学习都要用的到的。排序算法,等等,哪里能不用到指针,一定要明白指针真谛,多看书吧。