黑马程序员技术交流社区

标题: 关于ios1期基础测试的问题 [打印本页]

作者: 墨涵    时间: 2014-4-29 01:17
标题: 关于ios1期基础测试的问题
本帖最后由 墨涵 于 2014-4-30 09:47 编辑

#include
void change(int *n);
int main()
{
    int a = 90;
   
    change(&a);
   
    printf("%d\n", a);
   
    return 0;
}
void change(int *n)
{
    *n = 10;
}
请问*是指针的意思么,&呢
作者: 杨勇    时间: 2014-4-29 01:40
*n = 10;
指的是把10存储到指针n指向的存储空间,*后面跟一个指针变量名,意思是访问这个指针变量名所指向的存储空间。
change(&a);
指的是把a的地址作为change函数的参数进行调用,&是取址运算符,&后面跟一个变量名,意思是取出这个变量的地址。
希望能够帮到你。

作者: sabjiang    时间: 2014-4-29 12:34
我的理解是,所有的数据在内存中都有两部分组成:
一个是数据本身的值;
一个是数据所在的存储空间的地址。
*也有两个意思,定义一个指针变量,所有的指针变量里存储的都是地址信息,指针变量的类型告诉我们这个指针保存的地址指向的数据的类型。
*也是一个运算符,表示取出地址指向的值,&是取出数据的存放地址,可以认为是跟*的逆运算
(粗浅见解,希望不会误解你)
作者: 墨子    时间: 2014-4-29 14:05
*n是定义指针,&的意思是寻址,*p=&a意思就是将a的存储地址赋给指针,这样指针就能调用a内的数值了。
作者: xiaodixing    时间: 2014-4-29 17:42

#include
void change(int *n);
int main()
{
    int a = 90;
   
    change(&a);
   
    printf("%d\n", a);
   
    return 0;
}
void change(int *n)
{
    *n = 10;
}
    *有两个意思,当他在定义的时候int *n表示n是一个指针变量,当他在函数中的时候:比如*n 表示访问n所指向的存储空间。&表示取地址比如:题中的&a表示将a的地址传递给*n.
   *和&结合方向从右向左,在一起又相互抵消的作用。
希望能够帮到你!

作者: 墨涵    时间: 2014-4-30 09:34
感谢各位的耐心讲解,懂了




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