C语言的学习二

2 篇文章 0 订阅
2 篇文章 0 订阅

今天学习什么是指针

指针是什么?

指针是一块内存空间(内存地址)

咱们用代码理解一下

#include<stdio.h>
main(){
    int i ;//申请一块内存空间,空间大小的4byte ;给这个内存空间去一个名字i 
    i=3;//把一个int类型数据为3,放到i的内存空间里面  
    //int i 创建出来存放int类型的数据 ;double d 创建出来存放double类型的数据
    
    
    int* p;//申请一个内存空间,空阿金大小4yte
    //int* 创建出来P存放一个地址
    //创建一个int* 的数据类型,p就是他的别名 
    // p里面存放的就是一个内存空间地址
    
    p = &i;//取出i的地址
    printf("i的地址值为:0x%x\n",p); //输出I的地址值
    printf("i的值为:%d\n",i); //输出I的值
    printf("i的值为:%d\n",*p); //把P的内存地址里面的值取出来 
    
    system("pause");

输出的结果

 

 

修改了i的值会不会影响P的值??

但是是不会

为什么呢?因为P的一个内存空间,这个空间已经创建好了,里面的值是是什么不会影响P的值。

交换两个数据来体验一下指针

#include <stdio.h>
//交换两个数字的函数 
void swap(int i, int j){//方法体放在调用的前面 
     int temp ;
     printf("交互数据.....\n"); 
     temp = i;
     i = j;
     j = temp;
}
//交换两个数据 传递过来的是地址。 
void swap2(int* p, int* q ){
     int temp ;
     printf("交互数据.....\n"); 
     temp = *p;//把P里面的值取出给到temp
     *p = *q;//把q里面的值给到p的值
     *q = temp;//把temp给到q的值
}

main(){

  int i = 3;
  int j = 5;
     
  printf("i=%d\n",i);
  printf("j=%d\n",j);
  swap2(&i,&j); 
  
  printf("i=%d\n",i);
  printf("j=%d\n",j);
  
  system("pause");
}

 

子函数一但执行完就会被系统回收掉

 

指针的常见错误

#include <stdio.h>
main(){
  
  //指针的第一种常见错误,使用指针变量,必须先赋值,后使用。 
  //int* p ; //声明一个指针变量,用来存放地址, 
  //printf("*p=%d\n",*p);    //野指针
  
  
  //指针的第二种常见错误, 数据类型一定要匹配,什么类型的数据,就需要用什么类型的指针变量 
  //int i =3;
  //int* p = &i;
  
  //double d = 3.1415926;
 // double* q = &d;
  
  //p = &d;
 // printf("*p=%\n",*p);
  //指针的第三种错误。 
  // double* q =&3.1415926 
  
  //指针的第四种错误
  //int* p = 0x22ff3d; 
  
  int  *      p;  //int* p    int               *p
  //int *p
  
  system("pause");
}

 

指针的优点:

直接访问硬件(opengl显卡绘制图)

快速传递数据(指针表示地址)

返回一个以上的值(返回一个数组或者结构体指针)

表示复杂的数据结构(结构体)

方便处理字符串

有主于理解面向对象

多级指针

#include <stdio.h>
main(){
  
  int i = 3;
  
  int* p = &i;
  
  int** q = &p;
  
  int*** r = &q;
  
   
  printf("i=%d\n",  ***r);
              
  
  system("pause");
}
 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大不懂

码字不易,一块也是爱,么么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值