c链表预习和malloc复习和.....的使用

1.链表是由借点构成的,关键是定义结点;

2.链表的结点定义打破了先定义再使用的限制,即乐意用自己定义自己(递归函数的定义也违反了先定义后使用)

3.对链表的基本操作:

    创建链表

    检索操作

    插入操作

    删除操作

4.一个指针类型的成员可以指向其他类型结构的结构体数据,也可以指向自己所在的结构体类型的数据

    每个结点中的next即使自己的一个成员,还指向下一个结点的数据,即它是下一个结点内容的地址


#include<stdio.h>
struct student
{
 long num;
 float score;
 struct student *next;
};
#define NULL 0
int main(void)
{
 struct student a,b,c,*head,*p;
 a.num=99101;//在这里会发现:就是a后面是
 a.score=89.5;
 b.num=99103;
 b.score=90;
 c.num=99107;
 c.score=85;
 head=&a;
 a.next=&b;
 b.next=&c;
 c.next=NULL;
 p=head;
 do
 {
	 printf("%5.1f%5.1f\n",p->num,p->score);
	 p=p->next;
 }while(p!=NULL);
 return 0;
}



6. void *malloc(unsigned int size)返回值是一个指向分配域起始地址的指针,基本返回型是vois
           void *calloc(unsigned n,unsigned size)在内存动态区中分配n个长度为size的连续空间,返回值指向分配域起始地址的指针,失败返回NULL
           主要用途是为以为数组开辟动态存储空间,n为数组元素个数,每个元素长为size
           void free(void *p)作用:释放由p指向的内存区。P:是最近一次调用calloc或malloc函数时返回的值,这个函数是没有返回值的,动态分配的存储单元在用完后一定要释放,否则内存会因为申请空间过多引起资源不足而出现故障
   

#include<stdio.h>
void func(char  **t)//*t为字符串地址,要将字符串的值初始化开辟的空间**t=*p;*t指向p的地址
{
    //int i;
    //char s[]="hello";
    //char *p=t;
      *t=(char*)malloc(sizeof(char)*10);//这函数用的是二级指针,先将地址赋值,然后将内容写进地址
       strcpy(*t,"hello");
 
       puts(*t);//puts()本身就用的是指向字符串的指针
  //     for(i=0;i<sizeof(char)*10;i++)
  //  {
   //                 memset(s[i],*(t+i),i);
 //   }
}
 
int main(void)
{
    char *p="he";
    func(&p);//这里传递的应该是地址
    puts(p);
    //int* p=   (int *)malloc(sizeof(int)*10);//开辟了一个数组的空间
    //*p=6;//存值
    //printf("*p=%d",*p);
    //memset(p,0,sizeof(int)*10);//清空内存为0
//  puts(p);
    return 0;
}

     

7.。。。。。的用法

#include <stdio.h>
#include <stdlib.h>
#include<stdarg.h>
void abc(int n,...)
{
    va_list list;//首先声明一个list
    va_start(list,n);//从n这个参数就是diyige
    printf("%c\n",va_arg(list,int));//传递的是int类型,输出的是字符
    printf("%f\n",va_arg(list,double));
    printf("%d\n",va_arg(list,int));
    va_end(list);
}
int main(void)
{
      abc(1,'c',3.5,4,5,6,7,8);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值