C语言学习笔记4

断点是下一步要执行的程序
F5开始调试-执行到断点处停,如果断点在循环处,则一次F5到达首次循环位置,再按F5,继续执行到下一次循环的此断点处。
ctrl+F5开始执行-一直执行到结束不停
F11逐语句-会进入函数内部
F10逐过程-把函数当成整体不会进入函数内部
Fn10调试-可以看监视内存反汇编寄存器调用堆栈
小端存储:小地址存小字节,小字节显示在内存左边。可以用char*型指针指挥int型变量确定是否为小地址存小字节-小端存储
不管是char还是int都是有符号类型,只有unsigned char unsigned int才是无符号类型
计算机 输入不管是有符号类型还是无符号类型立马转补码(正数不怕因为不变),存补码,处理补码,处理完补码,只有输出才再转补,如果输出的是无符号数则不再转补直接输出补码
记忆:-1的补码64位全1,存储的时候根据数据类型进行位数截取,输出时候根据输出类型进行位数提升,有符号类按最高位提升,无符号类按0提升。

区分 整个数组的指针和数组首元素的指针
整个数组的指针:存放的是整个数组的地址&arr
数组首元素的指针:存放的是数组首元素的地址arr       char* p    =arr   *p是arr[0]
野指针要避免:指针指向的位置是不可知的,或未定义的
数组的指针的记忆方式:首先主语它是一个指针,定语指向数组的,存放的是整个数组的地址(不是数组首元素地址),解引用就是整个数组。 char (*p)[5]=&arr   (*p)[4]   |  char (*p)[3][5]=&arr   (*p)[2][4]
对于各种类型指针的写法的记忆方式:首先找主语是什么,然后添定语是指向谁的,存放的是什么,解引用是什么
函数的指针
在函数里函数名就是函数的地址,但数组名仅是首元素地址【除&arr、sizeof(arr)】
函数指针套用指针的记忆方式:主语是指针,添定语是指向函数的(写函数的括号及形参),存放的是函数的地址,解引用是函数不解引用也是函数:int (*padd)(int x,int y)=ADD  p(3,5)=ret ret=7
指针数组
首先主语是数组,添定语是指针的数组,存放各元素地址或各数组首元素地址,解引用是各元素值或各数组首元素值:int*arr[2]={&a,&b}/{arr1,arr2}  |  *(arr[1])=b的值/*(arr[1])=arr2数组的首元素值
函数指针数组
首先主语是数组,添定语是指针的数组是指向函数的,存放各函数地址,解引用或者不解引用是函数:int (*arr[3])(fomal_parameter)={ADD,ADD1,ADD2}   (arr[2])就是函数ADD2
函数指针数组的好用之处:用输入的索引值选函数,就不用写if(输入等于几)走哪个函数
//    scanf("%d", &choose);//选择函数1-4,因为索引值从0起,输入充当索引值要减1
//    int(*p[])(int, int) = { Add,Sub,Mul,Div };
//    (p[choose-1])(x, y);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值