c语言指针的理解

来源:互联网 发布:ubuntu mysql安装 编辑:程序博客网 时间:2024/05/09 02:59

本人对指针的一点理解,欢迎批评指正。


指针,这个名字起得很形象,它就真的像表盘上的指针,指向一个具体的位置。

int add(int a, int b)

{

return a+b;

}

这个函数输入参数a和b,可以返回a与b的和;你有没有想过,程序写成这样可以吗?

int add(int a,int b,int c)

{

c=a+b;

}


事实上,这样在主函数打印c的值并不能得到a与b的和。因为在这个函数中,a,b,c都是临时变量
,在执行add()后就被释放了。

那么有没有一种办法解决呢,有 那就是指针。

#include<stdio.h>

void add(int a,int b,int *c)

{

*c=a+b;

}

int main(void)

{

int a=1,b=2,c;

add(a,b,&c);      //注意,传的是c的地址

printf("%d\n",c);

return 0;

}


其实在add()里面c变量还是临时变量,在函数结束后被释放,但是取c的内容可以直接改变主函数中c的值。

(注意:add()里面的c与主函数的c并不是存在一个位置的)

#include<stdio.h>
void add(int a,int b,int *c)
{
*c=a+b;
printf("%ld ",&c);
}
int main(void)
{
int a=1,b=2,c;
add(a,b,&c);
printf("%d  %ld\n",c,&c);
return 0;
}

可以这样感受一下看看它们的地址值。


原创粉丝点击