C语言数据指针用途及特点

指针什么情况下用才比较好,稍微列举个例子,最好说说什么情况下一定要用指针比较好再譬如如图所示,数组a[2]是个元素,指针也可以找到元素,用哪个方法好,是不是a[2]我要是... 指针什么情况下用才比较好,稍微列举个例子,最好说说什么情况下一定要用指针比较好

再譬如如图所示,数组a[2]是个元素,指针也可以找到元素,用哪个方法好,是不是a[2]我要是从别的地方调用,a[]就要设置成全局变量,比较占用ram,要是用指针就有可能省资源?

满意回答我追分
展开
 我来答
qq704504393
2011-04-03 · 超过10用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:43.6万
展开全部

是的

实际上函数在内存中也要占据一片存储单元, 这片存储单元的起始地址, 我们称其为函数的入口地址, 即函数的指针, 函数的入口地址是用函数名来表示的。

因此我们可以定义一个指针变量, 让它的值等于函数的入口地址,   然后可以通过这个指针变量来调用函数, 该指针变量称为指向函数的指针变量 。

这里还有两个简单程序关于指针和数组的区别

 ①实参和形参都用指针变量

#include  <stdio.h>

void  inv3(int  *x , int  n);

void  main( )

{  int  *p , a[6]={1, 3, 4, 6, 7, 9};

    p = a ;        

    inv3( p , 6 );

    for( p=a ; p<a+6 ; p++ )   

         printf(“%3d”, *p );

    printf(“\n”);

 }

void  inv3(int  *x , int  n)

{   int   temp, m=(n-1)/2;

     int   *p , *i , *j ;

     i=x ;      j=x+n-1;    p=x+m;

     for(  ; i<=p ; i++, j-- )

        {  temp=*i ;   *i=*j ; 

          *j=temp ; }

}

②实参用指针变量, 形参用数组名

#include  <stdio.h>

void  inv4(int  x[ ] , int  n);

void  main( )

{   int  *p, a[6]={1, 3, 4, 6, 7, 9};

     p = a ;

     inv4( p , 6 ) ;

     for( p=a ; p<a+6 ; p++ )

          printf(“%3d”, *p );

     printf(“\n”);

 }

void  inv4(int  x[ ] , int  n)

{   int   temp, i , j , m=(n-1)/2;

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

        {  j=n-1-i ;    temp=x[i] ;

           x[i]=x[j] ;   x[j]=temp;  }

}

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
雪见香山
2011-04-03
知道答主
回答量:33
采纳率:0%
帮助的人:11万
展开全部
省资源不是关键,用指针可以在函数内操作数据原存储单元而不是函数新开辟的内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wxd611730
2011-04-03 · 超过11用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:32.9万
展开全部
提高运行速度
在函数带如参数的时候会非常的方便
处理链表很方便

就是处理起来麻烦
在函数带如参数的时候会非常的方便
例如
void swap(int *x, int *y)
{
int p = *y;
*y = *x;
*x = p;
}

void main()
{
int a[10],i;
int max,min,max_i = 0,min_i = 0;

scanf("%d",&a[0]);
max = min = a[0];

for(i = 1; i <10; i++)
{
scanf("%d",&a[i]);

if(max <a[i])
{
max = a[i];
max_i = i;
}

if(min > a[i])
{
min = a[i];
min_i = i;
}
}

swap(&a[max_i], &a[min_i]);

for(i =0 ; i <10; i++)
{
printf("%d ", a[i]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qzhao_1
推荐于2017-09-10 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4407万
展开全部
指针的最大好处是:它非常灵活,功能强大!!它可以指向系统内存中的任何一个地址!这个功能是最棒的!尤其是编写系统程序的人员特别需要!例如:定义一个整型指针变量:int * point ; 然后你可以用 p=0x12345,即你可以指向机器的物理地址 0x 12345,然后你可以读取该地址的值。

至于你说的第二个问题,用数组比用指针安全、保险,不容易出错。所以如果能用数组引用元素的话,就尽量不用指针。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-09-24 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
1.指针概念:变量的地址(计算机内存字节的编号)叫做指针,存放变量地址的变量叫指针变量, 简言之,指针是用来存放地址的。
2.指针作用:指向这个变量或数组的首地址,是变量的间接引用方式。其值如果改变,变量的值或数组元素的值也会跟着改变。程序对变量的操作实际上是对变量所在的存储空间读取和写入数据。方便对变量的操作。
3.举例说明:
int a=3;/*定义一个整型变量a,并赋初值3*/
int *p;/*定义一个指针变量P*/
p=&a;/*让p指向a的首地址,也就是a的地址*/
程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3。这时可通过p直接引用a,实际上*p=3。以后不管a存放在内存中的哪个地方,只用通过调用p就可以引用a。这时如果令*p=4,则最后的a值也为4。对于数组,指针是指向数组的首地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式