无类型指针malloc

void*malloc(int size);

可以申请一段长度为size字节的空间,并返回空间的首地址。
分配一个Size大小的内存空间,如果分配成功则返回地址空间的首地址,如果分配失败则返回NULL。

虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一
些编译器的检查。

对于一个指向一块内存的指针如果用比如sizeof(p)显示大小(int * p=new
int[10]),也只是显示4,代表首地址大小,不能显示正块内存的大小,而且根本没有意义

#include <stdio.h>
#include <stdlib.h>
int main()
{	int num;
	int i;
    int choice;
    printf("请输入元素个数:\n");
    scanf("%d",&num);
    if(num>6)
  { printf("我们没有这么多姑娘,你没礼貌,相亲单方面终止!!!\n");
    
    system("pause");
    exit(-1);
   }
	int *palace=(int*)malloc(num*sizeof(int));
		if(palace==NULL)
        printf("开辟空间失败,请知晓!!!\n");
        
     
    for(i=1;i<=num;i++)
{
	printf("请输入你们家老%d的年龄:\n",i);
    scanf("%d",palace);
    palace++;


   
}
	  palace=palace-num;
		for(i=0;i<num;i++)
   {
		printf("请确认你们家老%d的年龄:%d\n",i+1,palace[i]);//*palace//
   
				/*palace++;*/
   }
   
   printf("请选择你中意的人:\n");
   scanf("%d",&choice);
   switch(choice){
	case 1:
			printf("恭喜你走上不轨之路,约会(提货)时间在8月1日\n");
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;
    case 2:
			printf("恭喜你相亲成功,你选择的相亲对象为老%d,约会(提货)时间在8月2日\n",choice);
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;
    case 3:
			printf("恭喜你相亲成功,你选择的相亲对象为老%d,约会(提货)时间在8月3日\n",choice);
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;
    case 4:
			printf("恭喜你相亲成功,你选择的相亲对象为老%d,约会(提货)时间在8月4日\n",choice); 
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;  
    case 5:
			printf("恭喜你相亲成功,你选择的相亲对象为老%d,约会(提货)时间在8月5日\n",choice); 
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;
    case 6:
			printf("恭喜你相亲成功,你选择的相亲对象为老%d,约会(提货)时间在8月6日\n",choice); 
            printf("她的年龄为%d岁\n",palace[choice-1]);
            break;        
   default:
			printf("你没有认真做出选择,所有姑娘都瞧不起你,相亲失败!!!\n");
			break;
   }
	free(palace);
    
    
    palace=NULL;
	
    system("pause");
    
	return 0;
}

在 C 语言中,程序中 malloc 等内存分配函数的使用次数一定要和 free 相等,并一一配对使用。绝对要避免“malloc 两次
free 一次”或者“malloc 一次 free
两次”等情况。这就像我们的婚姻制度,必须是“一夫一妻制”,不能够“多夫一妻”或者“一夫多妻”,这些都是不合法的

在 free 之后必须为指针赋一个新值 在使用指针进行动态内存分配操作时,在指针 p 被 free
释放之后,指针变量本身并没有被删除。如果这时候没有将指针 p 置为 NULL,会让人误以为 p 是个合法的指针而在以后的程序中错误使用它。

free§ 完之后,一定要将指针变量 p 置为 NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值