指针(3)-day14

1,

char *strncpy(char *dest, const char *src, size_t n)
{  
   正常拷贝 
   多了 一个n 
   n < strlen(src)  
     只拷贝前n个字符,最终dest中不会有'\0'
   n == strlen(src)
     正常拷贝 
   n > strlen(src)
   if (n) 拷贝够了次数 
   剩余拷贝 统统补0
   
   思路:
   
   // 结束条件 *src == '\0'
   // n次 拷贝完成没有
}

 char *strncat(char *dest, const char *src, size_t n)
 {
   拼接的基础上 多 n控制条件 
   
   n < strlen(src) 拼n下就结束   n == 0
    
   n >= strlen(src) src拼完就结束  src=='\0'
   
   *dest = '\0' //?
 }
 
 
  int Strncmp(const char *s1, const char *s2, size_t n)
  {
     
  }
  //hello
  //help  //3 

2,

指针 + 函数 

char * strcpy(); //返回值类型 --- 指针类型 --- 指针的函数 --指针函数
char * strcat();


回调函数

callback
 
 int funcN()  
 {
 }
 
 main() 
 {
    choiceSortN(,funcN); //程序员 
 }
 
 回调函数: 通过函数指针调用的函数 叫回调函数 
 
 技术上: 通过函数指针的实现 
 
 函数指针(指向基类型-为函数类型) 函数类型的指针 
 
 接口 
 
  void qsort(void *base, size_t nmemb, size_t size,int (*compar)(const void *, const void *));
  
  @base    数组起始位置
  @nmemb   排序的元素个数 
  @size    单个元素的大小 
  @compar  比较函数  //确定进行比较的两个元素的大小规则 
  
  
  int a[10] = {1,2,3,4};
  
  int compar(const void *a, const void *b)       回调函数
  {
     *(const int *)a - *(const int *)b     
  }
  compar 两个参数 其实表示 数组中某两个元素的地址 
  
  compar 返回值 表示的就是数组中两个元素的大小关系 

3,

void *  //万能指针  --可以接收任意类型的指针 
           //void类型 
        注意: 
         如果通过该类型的地址进行数据访问
         一定要转换为 明确类型 

4,

char *strcpy(char *dest,const char *src);     返回值为 指针类型 ---指针函数 

函数指针 -- 函数的指针  --- 函数类型的 指针 
指针函数 -- 指针的函数  --- 返回值为指针类型 的函数 

5,

int a[3][4]; 本质还是一维数组 
int[4] a[3]; 理解角度 
             a --数组名 --代表类型 int [3][4]
             a --代表的值 -- 首元素的地址 -- a[0] 
             a[0] 的数据类型 int[4]
             &a[0]--对应的数据类型 int(*)[4] //数组类型 (一维整型数组类型)
             数组类型的指针 --- 数组指针                   
               int *
             
int (*p)[4] = a;

*p   三步运算完成后
     *p 相当于 是 int[4]这种类型 //数组
     *p 就相当于 int[4]这个数组的 数组名

int a = 10;
int *p = &a;

*p <=> a     

*(*(p+i) + j)<=>a[i][j]

p+1 偏移到了 下一个 int[4]
    类型为int(*)[4]
*(p+1) 偏移到下一个int 
       *(p+1) 代表的类型int[4] 此时相当于是 int[4]的数组名 
       *(*(p+1) + 1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值