C语言中指针和取地址符&的关系

一 概念定义:

  严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址。
  指针原理:

   其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放数据。

为了方便使用,编译器允许我们在写程序的时候,对抽屉进行命名(而不是使用抽屉的编号),这就是变量名。就比如说我们在程序中定义:char C; 这个时候系统会帮我们找一个空闲的抽屉(比方说编号为981的抽屉),命名为

C,用于存放一个字符变量。以后我们在程序里只要使用C这个变量,系统就知道是要对981这个抽屉里的数据进行操作。

     指针是什么呢?

  指针是我们申请一个空抽屉,里面不放数据,而放编号。比如我们申请一个字符指针:char *ch=&C; 这个时候,ch里面放的是C这个变量的地址(也就是981),其中&是取址符,也就是取C这个变量的地址,而不是值。*ch才

是ch指向的值。

二 实例解析:

     下面这个例子 很好的说明了两者的关系:

 1 #include <stdio.h>
 2 
 3 typedef struct
 4 {
 5     int arr;
 6     int brr;
 7 }test_array;
 8 
 9 test_array i_test;
10 
11 void test(test_array *btest)
12 {
13     btest->brr = 20;
15     printf("btest->brr:%d ",btest->brr);
16 
17 }
18 int main()
19 {
20     i_test.arr = 10;
22     test(&i_test);
24     printf("i_test.arr:%d ",i_test.arr);
25 
26     return 0;
27 }

猜你喜欢

转载自www.cnblogs.com/dylancao/p/12310742.html
今日推荐