我的c语言学习第六周学习 指针(1)

指针的概念

  • 指针其实就相当于门牌,一个数据或者字节的存在,既有它的值,又有它的地址,跟酒店开房是一样的。

&和*

  • 取地址运算符&:单目运算符&是用来取操作对象的地址
  • 指针运算符*(间接寻址符):与&为逆运算,作用是通过操作对象的地址,获取存储的内容

  • 有个很有意思的东西x=*&x,两个运算符互逆,一通操作的结果就是x=x。

  • 最后,也是我经常分不清的,int *pa该式子已经定义了pa为指针变量,之后使用pa=&a时,注意pa与*pa不一样。

  • #include<stdio.h>
    int main(){
    	int *a;
    	int b=2;
    	a=&b;//获取b的地址
    	print("%p",a);//输出a代表的地址 
    	print("%d",*a);//输出b的值 
    	return 0; 
    	
    }

  结合方向   

  • 两者皆为向右结合

  指针运算

  • 指针加减运算:int px; px+1=px下一位的地址。
  • 关系运算
  • px > py 表示 px 指向的存储地址是否大于 py 指向的地址;

    px == py 表示 px 和 py 是否指向同一个存储单元;

    px == 0 和 px != 0 表示 px 是否为空指针;

指针与数组

  • Int *p,a【10】;P=num;与p=&num【0】;表达一致,都指向数组首位。
  • *p=1,相当于为num【0】赋值
  • P+1,即地址向后移动一位,即num【1】

    P+x同理,注意边界

动态分配内存

malloc函数:

  • 头文件#include<stdib.h>
  • malloc自身为void类型函数,注意使用时的类型转换
  • malloc申请的空间是字节为单位(如:一个int四个字节,char一个字节)
  • 注意申请完内存后要进行释放,使用函数free()
  • 运行函数的过程中,当没有空间时,则申请失败返回0或者NULL。
  • #include<stdio.h>
    #include<stdlib.h>
    int main(){
    	int n=2;
    	int a*;
    	int i;
    	int d[];
    	a=(int*)malloc(n*sizeof(int);)
    	for(i=0;i<7;i++){
    		scanf("%d",&a[i]);
    	}
    	//利用a的动态内存分配输入 
    	for(i=0;i<7;i++){
    		scanf("%d",&d[i]);
    	}
    	//数组输入 
    	for(i=0;i<7;i++){
    		printf("%d\n",a[i]);
    		}
    	//a的输出 
    	for(i=0;i<7;i++){
    		printf("%d\n",a[i]);
            }
        //数组输出
    	//释放内存
    	free(a);
       retiurn 0; 
    } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值