C语言如果用指针去使用变量,和直接使用变量有什么不同。
2个回答
展开全部
指针是C语言中的一个重要概念,也是C语言的一个重要特色。正确而灵活的运用它,可以有效地表示复杂的数据结构;能动态分配内存;方便地使用字符串;有效而方便地使用数组;在调用函数时能获得一个以上的结果;能直接处理内存单元地址等……——《C程序设计(第三版)》
你在举例的时候说的直接引用数据的时候是几乎没有区别的,数组其实也相当于一种指针的应用,只不过是规定好了的。但比如用在排序上,同样是排序(从大到小)数据1和2,不用指针:
#include
void main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
}
原来输入的时候是a=1,b=2,程序运行完是a=2,b=1;
而如果运用指针:
#include
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
}
排序完成后,p1指向较大的数2,p2指向较小的数1,而a仍然等于1,b=2,它们的值是不变的。如果在另外的程序中同样调用了这两个变量,用指针就不会对其产生影响,这就是指针作用的一个方面。指针还有很多其它方面的作用,这也是c语言的一个特色,建议你好好地学一下,很有用的。
你在举例的时候说的直接引用数据的时候是几乎没有区别的,数组其实也相当于一种指针的应用,只不过是规定好了的。但比如用在排序上,同样是排序(从大到小)数据1和2,不用指针:
#include
void main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
}
原来输入的时候是a=1,b=2,程序运行完是a=2,b=1;
而如果运用指针:
#include
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d %d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
}
排序完成后,p1指向较大的数2,p2指向较小的数1,而a仍然等于1,b=2,它们的值是不变的。如果在另外的程序中同样调用了这两个变量,用指针就不会对其产生影响,这就是指针作用的一个方面。指针还有很多其它方面的作用,这也是c语言的一个特色,建议你好好地学一下,很有用的。
展开全部
指针很强大,也很危险。指针可以直接访问物理地址并修改,这是除C和C++以外别的语言几乎做不到的。
如果直接使用变量,就是在编译时分配内存,需要预先指定分配的内存大小;如果使用指针,就可以动态分配内存(不过也可能造成内存泄漏),在运行时分配内存,有更大的灵活性。
指针其实是一个博大精深的东西,有空指针、野指针、void *指针等各种陷阱和要注意的地方。初学者不必太着急,慢慢来才不会出错,更不会导致程序崩溃。(在造成程序崩溃这方面,指针可比变量厉害)
如果直接使用变量,就是在编译时分配内存,需要预先指定分配的内存大小;如果使用指针,就可以动态分配内存(不过也可能造成内存泄漏),在运行时分配内存,有更大的灵活性。
指针其实是一个博大精深的东西,有空指针、野指针、void *指针等各种陷阱和要注意的地方。初学者不必太着急,慢慢来才不会出错,更不会导致程序崩溃。(在造成程序崩溃这方面,指针可比变量厉害)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询