c知识点串理

一.类型
当char int short与unsigned 类型运算自动化为unsigned
char 1, short int 2, long int 4, long long 8,float 4,double 8,long double 12//8,bool 1,
void 无类型
float double 天生有符号
float 1位符号 后8个移码 后23个尾码
12.25f
1100.01 最后一位2的-2次方
float 内存存放方式:查
(float&)和(float)查2种转换的区别

eg:char a=-5;
扩充符号位 1111 1101 ->1111 1111 1111 1111 1111 1111 1111 1101
  unsigned int b=10;//
  if(a>b)//a变成无符号整型 非常大
  {}
  eg:
  char a,b,c,d
  a='a' a=0x61         编译成功 但char 只有一个字节 把字符转换成ascall码值
  b='ab'  b=ox6162
  c='abc'  c=ox61626364
  d='abcd' d=ox61626364
  小项目:
   上万的整形的表示和加减乘除运算
   6648845813232

二. 指针

  1. 从右向左解释 先括号
    *p=&a 一级指针
    **s=&p 二级指针
    int (*p)[10] =&ar指向数组的指针本质是指针 指向数组
    2.int p[10] 指的指针数组 他是个数组 有10个元素 每个元素是int类型 本质是数组 元素是指针
    也就是指向int的指针 也就是存放10int指针变量

比如 int a[12][10];
int ( * p )[10] = &a[0];
就是所谓 int (*p)[10]是一个指向一个含有10个int元素的数组的指针
int *p[10] 指针数组
int * (S)[10]=&br 指向br[10]
EG:
int ar[5][2]={1,2,3,4,5,6,7,8,9,10}
int (p)[2]=&ar[1] // 此时的ar为数组 &ar[1]代表第二个以为数组首地址 二维数组是由多个以为数组组成 ar+1的意思是第二行的首地址
int s=ar[1]
printf("%d %d \n",p[1][3].s[3])
输出 p[1][3]=
(
(p+1)+3)//可以改编成这样//=8
s[3]=6 //指向3的地址
s[3]= * (s+3)//指向3+3 6的地址
p+1指向第二行地址的指针
*(p+1)指向第二行元素的指针

  • (*(p+1)+3)空间元素的值
    !!手机图
    //加星号改变了类型//
    END
    2.函数指针
    int fun(int ,int )//函数的声明
    int (*pfun)(int ,int )=NULL//函数指针存放
    pfun=Add_int //Add_int ,Add_int ()
    sizeof(pfun)=4
    sieof(*pfun) 报错
    EG:
    pfun=Add_int //pfun指向函数Add_int
    a=10
    b=20, c=0;
    c=pfun(a,b)
    c= (*pfun)(a,b)
    EG
    void(int a,int b,int (*P)(int ,int ))
    //函数指针 探索void(int a,int b,int (*P)(int ,int ))和void(int a,int b,int P(int ,int ))的差异//
    {
    if()return;
    int c=p(a,b);
    printf(“c”)
    }
    int mian()
    {
    fun(10,20,Add_int );
    fun(10,20,Max_int );//回调函数
    }
    end
    函数指针定义方案
    typedef int (*pfun)(int ,int )
    pfun x,y;//不要和宏扯在一起
    eg1: pfun fun(pfun P)
    {
    returun c;//返回的指针函数
    }
    eg2:
    int main()
    {
    int (*pfun[3])(int,int )={add_int ,max_int ,sub_int );//函数指针数组,开辟3个字节//
    int( * (*P)[3]))(int ,int );// (*P)[3])指向数组 在加上‘ * ’
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值