随堂笔记





//利用指针的两个变量的交换
#include <stdio.h>






void add(int *p1,int *p2) 
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;


}


void main()
{


int x = 10; int y = 20;
int *p1 = &x, *p2 = &y; 
printf("x==%d,y==%d\n", x, y);
add(&x,&y);
printf("x==%d,y==%d", x, y);
getchar();


}








指针常量:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变。


数据类型  *   const  指针变量=变量名;
修饰符const与指针变量紧邻,说明指针变量不允许修改,既然指针变量的值不能修改,所以一定要在定义的时候给定初值(指向一个确定存在的地方)


常量指针:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针;


const 数据类型  *指针变量=变量名;
或者     数据类型  const  * 指针变量=变量名;


常量指针指向常量:位置不能改变,是一个常量,不能修改数据,能读取内存数据。


 const   数据类型 * const 指针变量=变量名;
数据类型 const  *const 指针变量=变量名;






//比较不能数据类型的变化
/*
void f(int a[], long b[], short c[], char d[])


{


for (int i = 0; i < 10; i++) {
printf("%p %p %p %p", a++, b++, c++, b++);
getchar();
}


}




void main()
{
int a[10];
long b[10];
short c[10];
char d[10];
f(a, b, c, d);
getchar();


}*/
函数名: malloc 
功  能: 内存分配函数 
用  法: void *malloc(unsigned size); 
程序例:
#include <stdio.h> 
#include <string.h> 
#include <alloc.h> 
#include <process.h>
int main(void) 

   char *str;
   if ((str = malloc(10)) == NULL) 
   { 
      printf("Not enough memory to allocate buffer\n"); 
      exit(1);  
   }
   strcpy(str, "Hello");
   printf("String is %s\n", str);
   free(str);
   return 0; 
}
函数名字realloc   
原型:extern void *realloc(void *mem_address, unsigned int newsize); 
语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。新的大小一定要大于原来的大小不然的话会导致数据丢失!   
    
功能:先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,
如果空间不够,先按照newsize指定的大小分配空间,
将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,
同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。    
返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。   
注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,
应使用free()函数将内存块释放。
程序例:
#include<stdio.h>    #include<stdlib.h>   
 int main()    
{     int i;     int *pn=(int *)malloc(5*sizeof(int));    printf("%p\n",pn); 
   for(i=0;i<5;i++)    scanf("%d",&pn[i]);  
   pn=(int *)realloc(pn,10*sizeof(int));   
 printf("%p\n",pn);   
 for(i=0;i<5;i++) 
    printf("%3d",pn[i]);   
  printf("\n");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值