C语言中,为了让指针类型更加易于使用和理解,已经预定义了几种指针类型。下面是它们的名称和描述:
void *
:指向任意类型的指针。char *
:指向字符类型的指针。int *
:指向整型的指针。float *
:指向单精度浮点类型的指针。double *
:指向双精度浮点类型的指针。
使用这些预定义的指针类型,可以更快地定义和使用指针类型变量,而不必手动指定指针类型的大小和其他属性。下面展示两个使用这些预定义指针类型的示例。
示例1
定义一个默认为void类型的指针变量,然后使用malloc()
函数为它分配内存,最终将分配的内存用指向整型的指针变量进行操作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
void* ptr;
ptr=malloc(4*sizeof(int));//分配4个int大小的空间,共16个字节
int *iPtr;
iPtr = (int*) ptr;
// 完成指针类型的转换,需要使用强制类型转换
//使用iPtr进行数据存储
*iPtr = 10;
printf("%d\n", *iPtr);
free(ptr);// 释放指针内存
return 0;
}
注:使用malloc()
函数分配指针变量时,我们需要使用未经初始化的变量赋值,但是未初始化的变量通常会导致程序出现不确定的错误,因此我们建议在定义指针变量时进行初始化。
示例2
一个组合且带参数的函数,函数可以接收不同类型的指针参数,最终输出相应类型的值。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void displayValues(void* val, char type){
switch(type){
case 'c':
printf("%c\n", *(char*)val);
break;
case 'i':
printf("%d\n", *(int*)val);
break;
case 'f':
printf("%f\n", *(float*)val);
break;
case 'd':
printf("%lf\n", *(double*)val);
break;
default:
printf("Unknown data type\n");
}
}
int main(){
char c='a';
int i=10;
float f=2.5;
double d=3.14159;
displayValues(&c, 'c');
displayValues(&i, 'i');
displayValues(&f, 'f');
displayValues(&d, 'd');
return 0;
}
在本代码种,我们使用了一个名为displayValues()
的函数。该函数带有两个参数:第一个参数val
是void
指针类型,它接受了我们需要输出的值;第二个参数type
是字符类型,它用于指定参数类型。然后,我们使用一个switch
语句根据参数类型对指针数据进行转换并输出相应的结果。在main()
函数中,我们创建了四个本地变量c
,i
,f
和d
,并将它们的地址传递给displayValues()
函数,分别指定了需要输出的数据类型为char
、int
、float
和double
。最终,程序输出了这些变量的值。
希望这两个示例能帮助你更好地理解如何使用C语言指针预定义类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言指针预定义类型 - Python技术站