Linux C语言进阶-D11多级指针、void指针及const

多级指针

多级指针变量:指向指针变量的指针变量

在下图中,定义一个a数组,再定义一个指针数组p[2],其中p数组中存储的是地址,再定义一个二级指针q指向p[0],即&p[0],又由于&p[0]就是p,所以q=p

Linux C语言进阶-D11多级指针、void指针及const_第1张图片

Linux C语言进阶-D11多级指针、void指针及const_第2张图片

 指针数组的打印

1、使用数组s打印

Linux C语言进阶-D11多级指针、void指针及const_第3张图片

2、使用二级指针p打印

p指向s的首地址,所以*(p+i)就是地址依次遍历,并解引用

Linux C语言进阶-D11多级指针、void指针及const_第4张图片

void指针

1、一种不确定数据类型的指针变量,可通过强制类型转换让该变量指向任何数据类型的变量

2、void指针在没有强制类型转换前不能进行任何指针的算术运算

        形式:void* <指针变量名称>

注意下图9~13行的细节,在9和12也可以直接赋值,p=&m,q=&n

Linux C语言进阶-D11多级指针、void指针及const_第5张图片

 使用void指针访问一维数组

Linux C语言进阶-D11多级指针、void指针及const_第6张图片

void指针应用场景:在下图中不限制指针类型,void指针可转换成任何类型,使得函数功能更加强大

Linux C语言进阶-D11多级指针、void指针及const_第7张图片

const变量

const <数据类型> 变量名 = [<表达式>];为了使得变量的值不能修改

常量指针:const <数据类型> *<指针变量名称> = [<指针运算表达式>];

        不可通过指针改变其目标的数值

指针常量:<数据类型> * const <指针变量名称> = [<指针运算表达式>];

        不能修改指针变量存储的地址值

main函数参数

Linux C语言进阶-D11多级指针、void指针及const_第8张图片

  

你可能感兴趣的:(Linux,c语言,c语言,开发语言)