指针的入门pointer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiger_gy/article/details/88667207

                                   指针的入门pointer

pointer指针,一般计算机中用一个16进制数来表示内存地址。通过使用数据类型加*声明一个指针变量,指针变量只能用来保存内存地址,用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来,此时我们可以说 指针pointer指向了 i的地址。

#include<stdio.h>    
#include<stdlib.h>    
/**
*/
main(){  
       int i = 123;
       //一般计算机中用16进制数来表示一个内存地址 
       printf("%#x\n",&i); 
       //int* int类型的指针变量  pointer指针  指针变量只能用来保存内存地址
       //用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来
       //此时我们可以说 指针pointer指向了 i的地址 
       int* pointer = &i; 
       //int *pointer ; int * pointer   
       printf("pointer的值 = %#x\n",pointer);
       printf("*pointer的值%d\n",*pointer);
       *pointer = 456;
       printf("i的值是%d\n",i);
       system("pause"); 
       } 

* 指针常见错误

    * 声明了指针变量后 未初始化直接通过*p 进行赋值操作 运行时会报错

        * * 未赋值的指针称为野指针(没有对指针进行赋值就对指针进行存取操作)

    * 指针类型错误 如int* p 指向了double类型的地址, 通过指针进行读取操作时,读取值会出错

#include<stdio.h>    
#include<stdlib.h>    
/**
*/
main(){  
         //野指针 (没有对指针进行赋值就对指针进行存取操作)  指针使用之前要初始化 赋给它一个自己程序中声明的变量的地址
         //指针使用的时候要注意 int类型的指针要指向int类型的内存地址, double类型的指针要指向double类型的地址 ....
        
         //如果乱指会出bug 
         int i; 
         double d = 3.1415;
       double* pointer = &d;
       printf("pointer的值=%#x\n",pointer);
       printf("*pointer = %lf\n",*pointer);
       system("pause"); 
       } 

猜你喜欢

转载自blog.csdn.net/tiger_gy/article/details/88667207