当前位置:首页 » 编程语言 » c语言中为什么要用到指针法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中为什么要用到指针法

发布时间: 2022-07-18 23:10:26

c语言中为什么要用到指针呢

很多情况可以用到。这需要在编程过程中形成一种思维。
如 将一个结构体传递给一个函数。
如果不用指针,传送速度慢,如果通过指针,只要传递一个地址。
struct example
{
int i;
int j;
int f;
char a[1024];
};
void main()
{
struct example ex;
fun(&ex);//将结构体ex的地址传递给函数fun
}
fun(struct example *p)
{
}

⑵ 为啥c语言要有指针

C语言没有像高级语言那样的引用类型,所以,在使用参数时,往往只能通过复制参数值来传递,即所谓的值传递,但是这样就造成了内存的浪费等诸多原因,指针为C语言提供了一种可以使用地址传递值的方法,在运行过程中,操作的将是原始的数据,而不是数据的拷贝。

⑶ C语言的指针有什么用

C里面函数都只能返回一个值,如果你的函数要返回两个值,那就要用指针了,把变量地址传进函数,然后把希望通过函数操作后想要的值存进传进来的变量地址里面。当然函数可以返回数组,结构体,但是你看多了你就知道,没有人会这么做的,都返回指针。试想如果我有一个1万个元素的数组,你会把它整个地传进一个函数里面或者整个地返回出来吗?C语言里面都是传值的,就是说传进函数的参数值首先被复制一边赋值给形式参数,你想想1万个元素,够呛咯!但是有指针就好多了,我们可以把指针(数组的第一个元素的地址)传进函数里面,有了开始地址,函数就知道东西在哪儿,就直接去那儿操作就可以了。单凭这一点,你就可以知道指针的威力,当然你也知道了指针一个很大的用处就是用于函数之间参数的传递与返回。指针就相当于一个代理一样,通过代理你知道了你要的东西在哪儿,你去那个地方就可以了,而不是需要把东西整个地板到你面前。

⑷ C语言中为什么要使用指针访问数组元素

用指针有一些好处:可以再指针上直接进行计算
比如加减指针。
另外当数组作为
参数传递
到函数中的时候,用指针是很方便的。
其实数组的名字就是一个指针。
有一本经典的书

C专家编程

可以帮助理解这个问题。这种基础问题是非常重要的。

⑸ 关于C语言,指针在编写和程序中有什么用处为什么要使用指针

这个问题太泛泛了, 说深了连编译技术和汇编的知识都牵扯到了, 你把书上的相关内容认真读几便, 不是很难, 但是需要自己去理解。 先把最经典的函数传值交换的例子看懂了。就是那个
void swap(int a, int b) 和 void swap(int * a, int * b)

⑹ c语言为什么会出现指针

因为要有链表,有链表才能动态存储,否则只能线性存储,有时不利于内存充分利用和存取效率。
但也不要被指针限制思维,你要是能想出不用指针又能高效的的更好的解决方法,那你也可以自创一种语言。语言只是形式,关键是其背后的逻辑。

⑺ C语言 写一个函数交换两个数的值,为什么一定要用指针

运用代码解释指针运用的理解如下:

#include<iostream>

using namespace std;

int fun1 (int a,int b)

{

int c;

c=a;a=b;b=c;

cout<<"a1:"<<a<<";b1:"<<b<<endl;

}

int fun2 (int *a,int *b)

{

int *c;

c=a;a=b;b=c;

cout<<"a2:"<<*a<<";b2:"<<*b<<endl;

}

int fun3(int *a,int *b)

{

int *c;

c=*a;*a=*b;*b=c;

cout<<"a3:"<<*a<<";b3:"<<*b<<endl;

}

int fun4 (int *a,int *b)

{

int c;

c=*a;*a=*b;*b=c;

cout<<"a4:"<<*a<<";b4:"<<*b<<endl;

}

int fun5 (int &a,int &b)

{

int c;

c=a;a=b;b=c;

cout<<"a5:"<<a<<";b5:"<<b<<endl;

}

int main()

{

int aa=1,bb=2;

fun1(aa,bb);

cout<<"aa1:"<<aa<<";bb1:"<<bb<<endl;

fun2(&aa,&bb);

cout<<"aa2:"<<aa<<";bb2:"<<bb<<endl;

fun3(&aa,&bb);

cout<<"aa3:"<<aa<<";bb3:"<<bb<<endl;

fun4(&aa,&bb);

cout<<"aa4:"<<aa<<";bb4:"<<bb<<endl;

aa=1,bb=2;

fun5(aa,bb);

cout<<"aa5:"<<aa<<";bb5:"<<bb<<endl;

return 0;

}

输出结果为:

a1:2;b1:1

aa1:1;bb1:2

a2:2;b2:1

aa2:1;bb2:2

aa3:1;bb3:2

a4:2;b4:1

aa4:2;bb4:1

a5:2;b5:1

aa5:2;bb5:1

main中调用fun1()时,将实参a,b的值传递给了交换函数,如果此时在swap1中打印,可以看到结果是正确的,但是该过程其实是将aa和bb分别复制了一份给了函数,执行完fun1()之后,aa和bb的值没有任何变化。

fun2(),看似的确使用了指针,但还是失败,因为这里是将aa和bb的地址给交换了,而并没有交换aa和bb的值。在这里由于未给c赋值,c中并没有确定的值,c中的值是不可预见的。此时c可能指向一个未知的存储单元。

而严重的情况是,该单元的数据可能是有用的,因此fun2()不但没有实现两个数的交换,反而给系统的稳定性带来威胁。

fun3(),将int赋值给int *,编译错误。

fun4()是正确的。为了在函数中改变了的变量能被其它函数调用,正确的办法是用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化。

函数调用结束后,哲别变量值的变化依然保留下来,这样就实现了通过函数调用是变量的值发生变化,在其它函数中可以使用这些改变了的值的目的。

fun5()也是正确的,这是引用的重要应用之一。对于引用的操作实际上是作用在引用所因的对象上。

(7)c语言中为什么要用到指针法扩展阅读

在函数中的参数,并不是调用者的变量,而是临时申请的变量a和b存放main函数中变量a和b的值,并在函数中用来计算,在fun中给a和b赋值都是在操作这两个临时申请的变量,函数返回后,这两个变量被舍弃,函数调用也没有将这两个临时变量的值返回给main函数中调用使用的参数功能。

所以,在函数中要操作调用者申请的变量,需要给出它们的指针,函数中用指针来找到这些变量的位置和内容。