黑马程序员技术交流社区

标题: 这个程序是什么意思呢,请高手详解一下 [打印本页]

作者: fangdanjames    时间: 2014-11-20 16:40
标题: 这个程序是什么意思呢,请高手详解一下
#include <stdio.h>

void aaa (int *n);

int main()
{
    int a = 90;
   
    aaa(&a);
   
    printf("%d\n", a);
   
    return 0;
}

void aaa(int *n)
{
    *n = 10;
}
作者: 这样真的好么?    时间: 2014-11-20 19:31
#include<stdio.h>
void aaa (int *n);//函数声明,无返回值,指针n作为形参

int main()
{
    int a = 90;
   
    aaa(&a);//调用aaa函数,将变量a的地址传给aaa函数的形参n(这样调用可以理解为将&a赋给n,即n指向了a)
   
    printf("%d\n", a);//调用函数之后将a的值输出
   
    return 0;
}

void aaa(int *n)//aaa函数的定义
{
    *n = 10;//*号在这里是取内容符,可以理解为将指针变量n指向的内存中的内容取出来。然后将10赋给它
}
//我全都写上了注释,能理解吧?
作者: mahei521    时间: 2014-11-20 20:51
通过函数实现变量值的改变,如果被调用函数不是使用指针形式,将无法实现变量值的改变,这是一个很好的体现指针在函数调用时是地址传递,而其他的是值传递!
作者: fangdanjames    时间: 2014-11-21 07:07
多谢各位好心人
作者: hityu    时间: 2014-11-21 08:04
aaa是一个接受整形指针的函数,main函数调用之并传入整数a的地址,aaa内完成对参数所指地址的复制,所以最后打印10,希望能帮助到你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2