C指针的概念基本用法

C指针

(一)概念:所谓指针,就是地址,系统的内存空间,被分为许多的子存储单元(就像一栋楼被分为几个单元),指针标识了这个存储单元的位置,在这个存储单元中又有指令数据(哪个单元,这个单元里住了哪些人);存储单元的地址和存储单元的内容需要分清楚

一个变量的含义包含两个方面,一是以存储单元编号表示的地址;一是它指向的存储单元的数据类型(如何为数据分配指针,需要指明它的类型(不同类型在系统中所占的字节数不一样))

(二)用法:

(datatype)*(指针变量):指向类型为datatype的指针变量

()的优先级高于*

①:通过指针引用数组

int a[10]={1,2,3,4,5};

int *p; //定义指针变量

p=a; //将数组a的首地址赋给指针变量p保存或p=&a[0],&是取地址符号

可通过数组名和指针变量引用该数组

②:通过指针引用字符串

char s[]="This is a example!";//同上

char *p;

p=s;

可通过数组名和指针变量引用该字符串

③:指向函数的指针

int fun(int,int,int)

int (*p)(int,int,int) //p的类型是 int(*)(int,int,int),该函数返回的类型仍是int类型

p=fun; //将函数的首地址赋给p

可通过函数名和指针变量引用该函数

④:指针数组

datatype *数组名[数组长度]

int *p[100]; //数组里面存放的都是指针变量

⑤:多重指针

指向指针的指针:

datatype **指针名; 

int *p[]

int **p; //相当于int *(*p),p是一个指向int(*p)类型的指针变量,int(*p)是指向int类型的指针变量,所以p是一个指向int类型的指针的指针

多重指针可以依次类推

⑥:动态内存分配

对内存的动态分配是通过系统提供的库函数来实现的,主要分为以下四类

1)malloc函数

void *malloc(unsigned int size):在内存的动态存储区域中分配一个长度为size的连续空间,函数的返回值为所分配区域的第一个字节的指针

若分配失败返回NULL(空指针)

2)calloc函数

void *calloc(unsigned n,unsigned size):在内存的动态存储区中分配n个长度为size的连续空

3)free函数

void free(void *p):释放指针变量p所指向的动态内存空间

4)realloc函数

void *realloc(void *p,unsigned int size):如果已经通过malloc函数或calloc函数获得了动态空间,若想改变其大小,可以使用realloc函数重新分配

指针变量=(转换类型)malloc|calloc|realloc

注意:当把void指针赋值给不同基类型的指针变量(或相反)是,编译系统会自动进行类型转换

例如:

int *p1;

void *p2;

p1=(int *)p2;

相当于p1=p2;系统会自动进行类型转换

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值