06 指针入门

1,简单的说,指针表示一个地址,存放的是地址

 1 #include<stdio.h>
 2 
 3 void main() {
 4     int num = 1;
 5     printf("num的值=%d  num的地址=%p\n", num, &num);
 6     //1,如果要输出一个变量的地址,使用格式是 %p
 7     //2,&num表示取出num这个变量对应的地址
 8 
 9 
10     int* ptr = &num; //定义一个指针变量,指针
11     printf("ptr的地址是%p  ptr存放的值是一个地址为%p  ptr存放的地址所指向的值是(ptr指向的值)%d\n",&ptr,ptr,*ptr);
12     //1,int* 表示类型是 指针类型
13     //2,名称ptr,ptr就是一个 int* 类型
14     //3,ptr指向了一个 int 类型的变量(的地址)
15     //4,指针变量,本身也有地址 &ptr
16     //5,获取指针变量存放的地址 ptr
17     //6,获取指针指向的值:*ptr
18 
19 }

 

 内存布局图:

 

 2,练习1

  写一个程序,获取一个int 变量 num 的地址,并显示到终端将num 的地址赋给指针 ptr,并通过 ptr 去修改 num 的值,并画出内存布局图

1 #include<stdio.h>
2 void main() {
3     int num = 100;
4     printf("num的值是%d num的地址是%p\n", num, &num);
5 
6     int* ptr = &num;
7     *ptr = 200;
8     printf("num的值是%d num的地址是%p\n", num, &num);
9 }

 

   内存布局图

    

3,练习2

  判断程序是否正确

  

 

 4,练习3

  输出什么内容

 1 #include<stdio.h>
 2 
 3 void main() {
 4     int a = 300;
 5     int b = 400;
 6     int* ptr = &a; //ptr 指向a
 7     *ptr = 100; //a=100
 8     ptr = &b;  //ptr指向b
 9     *ptr = 200; //b=200
10     printf("a=%d,b=%d,*ptr=%d", a, b, *ptr);
11 }

 

 5,指针细节

  ①基本类型,都有对应的指针类型,形式为 数据类型*  ,比如 int的对应的指针就是 int* , float 对应的指针类型就是 float* ,以此类推

  ②此外还有指向数组的指针,指向结构体的指针,指向共用体的指针,二级指针,多级指针等。

  

  

  

 

posted @ 2020-02-20 21:39  shanlu  阅读(107)  评论(0编辑  收藏  举报