C和指针->用法举例

下面举例说明几种不同的指针类型:

一、指针变量

//格式:
//类型名 *指针变量名;

int *p;

二、一维数组与指针变量

int *p;
int a[10];

p=a; //数组名代表首地址,且是一个地址常量

三、多维数组与指针变量

int a[3][4];
/*
a+1是跳过一行。 因为二维数组名是行指针, 加1是跳过一行不是一个元素
切记:
1、只有列指针才是“真正” 指向元素, 即指向某一个元素的存储单元。
2、一维数组名表示的是列指针; 二维数组名表示的是行指针。
*/

四、函数与指向函数的指针

函数名与数组名一样, 是起始地址, 而且是一个地址常量

五、指向函数的指针变量

/* 
指向函数的指针变量格式:

类型名 (*指针变量名) ();
*/

六、返回指针的函数

/*
返回指针的函数的定义方式为:

类型名 *函数名(形参列表)
{ }
*/

七、指针数组和指向指针的指针变量

/*
若一个数组的所有元素均为指针类型(地址), 则称为指针数组

格式:
类型名
int
*数组名[常量表达式];
*s[10];
*/
/*
用来存放指针变量地址的指针变量称为指向指针的指针变量

定义格式:
    基类型名 **指针变量名;
*/

八、空指针

/*
指针变量可以有空值null, 即指针变量不指向任何变量, 不指向任何有用的存储单元
*/

动态分配

1.malloc()函数

//格式: 
    malloc(size)
/*
作用是在内存的动态存储区中分配一个长度为size个字节的连续空间, 函数返回值为一个指向分配域起始地址的指针若分配失败则返回NULL.
*/
//例如: 开辟一个用于存放struct student数据的内存空间, 并让p指向该空间.

struct student *p=(struct student *)malloc(sizeof(struct student ));


2.free()

//函数格式: 
       free(p);
//作用是释放用malloc() 分配的内存。


 

猜你喜欢

转载自blog.csdn.net/weixin_42274148/article/details/86691203