7-31课堂笔记(粤嵌)

 课堂知识点

void无类型

 void类型常用于定义函数返回值类型和函数的形参类型,如果函数不想要返回值可以直接return。

无类型(void)可以定义变量吗?

无类型是不能申请和定义空间的

注意:void是无类型,void*是万能指针类型,万能指针类型void *能定义变量也能赋值但是不能解引用,而void不能定义和申请内存空间

为什么可以void*类型的一级指针叫做万能指针类型呢?

          void类型的指针变量可以存储任意类型的地址,而且可以通过强制类型转换将void*类型的指针转换成任意类型指针,事实上其它任意类型指针也可以转换成任意类型指针,只要能确保内存是足够的,意思就是必须要大于或等于你要强转的类型。

          示例:

 malloc函数:

   (注意)堆空间和静态区(static)的生命周期比栈空间长,不会因为函数退出而被释放,我们平时申请的局部变量都储存在栈空间中,在函数执行完毕后就会释放内存。

    mallco只有一个参数,只需要以字节为单位输入你需要申请的内存大小即可,

申请成功则会返回空间首地址,失败就返回NULL。

     示例:

 calloc函数:

      calloch(a,b)与malloc功能差不多,但是calloc有两个参数,其中a是你要申请的内存块个数,b是你要申请的内存块大小。

示例:

 (注意)memset(a,b,c)是用来清空内存的,a是要清空的内存首地址,b是要替换的数一般为0,c是替换个数

      memcpy(a,b,c)是用来复制的,a是存放的首地址,b是复制内容首地址,c是复制的长度

     free是用来释放申请的内存的

课堂练习

int main()
{ 
  int * heap_start_p = (int *)malloc(sizeof(int));
  if(heap_start_p == NULL)
  { 
    printf("申请空间失败");
    return -1;
  }  
  *heap_start_p = 110;
  printf("%d----------%p",*heap_start_p,heap_start_p);

  free(heap_start_p);
    return 0;
}

作业:

使用malloc申请20个字节的空间,然后再空间里面的第3个房间开始一次性存放Hello Dante!

#include <stdlib.h>
#include <string.h>
#define NUM 20

void  funs(char * x);

void  funs(char * x)
{ 
   x = x + 2;
   while( *x != '\0')
   { 
    printf("%c",*x);
    x++;
   }

    // for(int i=2; i<strlen(x+2)+2; i++)
    // { 
    //     printf("%c",*(x+i));
    // }
}

int main()
{ 
   //char * p = (char *)malloc(sizeof(char)*NUM);
   // 20是元素个数    1是元素大小
   char * p = (char *)calloc(20,1);
   char mtext[] = "hello Dante!"; 

   memset(p,0,sizeof(char)*NUM);

   memcpy(p+2,mtext,strlen(mtext));

   funs(p);

   free(p);
    
    // char * u = "sjfaldk";
    // printf("%c",*u);  ---------  s
    

    // char arr[]="dlaka----";
    // printf("%s",arr);

      
    return 0;
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值