一:void指针
1:void
指针是一种不确定数据类型的指针变量,它可以通过强转类型转换让该变量指向任何
数据类型的变量
2:一般形式为:
void *<
指针变量名称
>
;
3:对于
void
指针,在没有强制转换类型之前,不能进行任何指针的算术运算。
#include<stdio.h>
int main()
{
int a=10;
void *p;
p=&a;
printf("%d %d \n",a,*(int*)p);
return 0;
}
4:题目:使用void指针遍历一维数组
#include<stdio.h>
int main()
{
int a[]={1,2,3,4,5};
int i,m;
m=sizeof(a)/sizeof(int);
void *p;
p=a;
for(i=0;i<m;i++)
{
printf("%d %d \n",a[i],*((int*)p+i));
}
return 0;
}
二:const修饰指针
1:常量化变量的值
例如:const int a =10;
常量化变量是为了使得变量的值不能修改
变量有
const
修饰时,若想用指针间接访问变量,指针也要有
const
修饰。
#include<stdio.h>
int main()
{
const int a=10;
a++;
return 0;
}
注意:会报错,因为常量化变量使a的值不能改变,
2:常量化指针目标表达式
一般说明形式如下
const
<
数据类型
> *<
指针变量名称
>
[
= <
指针运算表达式
>
]
;
常量化指针目标限制通过指针改变其目标的数值
但是指针变量存储的地址可以修改
#include<stdio.h>
int main()
{
const int a=10,b=5;
const int *p=&a;
p=&b;
return 0;
}
3:常量化指针变量
一般说明形式
<
数据类型
> *
const
<
指针变量名称
>
[
<
指针运算表达式
>
]
使得
<
指针变量
>
存储的地址值不能修改。
但可以通过
*<
指针变量名称
>
可以修改所指向变量的数值。
#include<stdio.h>
int main()
{
const int a=10,b=5;
int* const p = &a;
(*p)++;
return 0;
}
注意:必须要在初始化指针的地方指向地址
4:常量化指针变量及其目标表达式
一般说明形式如下:
const
<
数据类型
>*
const
<
指针变量名
> = <
指针运算表达式
>
常量化指针目标是限制通过指针改变其目标的数值
得
<
指针变量
>
存储的地址值不能修改
(结合2,3)