在 C 中获取指针的大小
本文演示如何使用 C 编程语言确定指针的大小。
C 编程语言中的指针
称为指针的变量是其值是另一个变量的地址的变量; 换句话说,指针本身包含内存位置的直接地址。 在指针可用于保存变量的位置之前,必须先对其进行声明。
语法:
type *var-name;
这里的type指的是指针的基类型,应该是合法的数据类型,var-name是存放指针的变量名。 请务必注意,用于指示指针的星号 *
与用于乘法的星号相同。
另一方面,这句话中使用星号 *
表示特定变量是指针。 以下是指针可接受的一些不同数据类型声明。
int *integerPointer;
char *characterPointer;
float *floatPointer;
double *doublePointer;
在 C 中使用 sizeof() 方法获取指针的大小
sizeof()
方法只接受一个参数。 它是一个运算符,其值由编译器确定; 因此,它被称为编译时一元运算符。
sizeof()
函数返回无符号整数数据类型。
让我们举一个例子,我们将使用 sizeof()
函数来确定数据类型不同的各种变量的大小。 分别使用数据类型 int、char、float 和 double 为名为 a、b、c 和 d 的四个变量设置初始值。
int a = 10;
char b = 'x';
float c = 10.01;
double d = 10.01;
在初始化名称为 *integerPointer
、*characterPointer
、*floatPointer
和 *doublePointer
的四个指针变量后,分别为它们赋值a、b、c 和d。
int *integerPointer = &a;
char *characterPointer = &b;
float *floatPointer = &c;
double *doublePointer = &d;
现在,我们需要一些 printf 命令来输出变量的大小和指针变量。
这些语句需要使用 sizeof 运算符,应该提供给它的参数是 a、b、c、d,以及相应的 *integerPointer
、*characterPointer
、*floatPointer
和 *doublePointer
。
printf("size of (a) = %lu bytes", sizeof(a));
printf("\nsize of (a) pointer = %lu bytes", sizeof(*integerPointer));
printf("\nsize of (b) = %lu bytes", sizeof(b));
printf("\nsize of (b) pointer = %lu bytes", sizeof(*characterPointer));
printf("\nsize of (c) = %lu bytes", sizeof(c));
printf("\nsize of (c) pointer = %lu bytes", sizeof(*floatPointer));
printf("\nsize of (d) = %lu bytes", sizeof(d));
printf("\nsize of (d) pointer = %lu bytes", sizeof(*doublePointer));
使用符号 %lu
是因为 sizeof 方法的结果是无符号整数。
完整的源代码:
#include <stdio.h>
int main() {
int a = 10;
char b = 'x';
float c = 10.01;
double d = 10.01;
int *integerPointer = &a;
char *characterPointer = &b;
float *floatPointer = &c;
double *doublePointer = &d;
printf("size of (a) = %lu bytes", sizeof(a));
printf("\nsize of (a) pointer = %lu bytes", sizeof(*integerPointer));
printf("\nsize of (b) = %lu bytes", sizeof(b));
printf("\nsize of (b) pointer = %lu bytes", sizeof(*characterPointer));
printf("\nsize of (c) = %lu bytes", sizeof(c));
printf("\nsize of (c) pointer = %lu bytes", sizeof(*floatPointer));
printf("\nsize of (d) = %lu bytes", sizeof(d));
printf("\nsize of (d) pointer = %lu bytes", sizeof(*doublePointer));
return 0;
}
输出:
size of (a): = 4 bytes
size of (a) pointer: = 4 bytes
size of (b): = 1 bytes
size of (b) pointer: = 1 bytes
size of (c): = 4 bytes
size of (c) pointer: = 4 bytes
size of (d): = 8 bytes
size of (d) pointer: = 8 bytes
在 C 中使用 malloc() 方法获取指针的大小
让我们再看一个指针变量的例子,使用 malloc 技术分配大小。
在 main()
函数中,初始化一个数据类型为 char 的指针变量,并将其命名为 *cPointer
。 分配一个名为 malloc()
的函数,并将 sizeof()
方法作为参数提供给它。
sizeof 方法接受 char *
作为其参数。
int main ()
{
char *cPointer = malloc(sizeof(char *));
}
此时,我们必须以字节为单位打印 *cPointer
的值。
printf("Size of the pointer is %lu bytes.\n", sizeof(*cPointer));
完整的源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *cPointer = malloc(sizeof(char *));
printf("Size of the pointer is %lu bytes.\n", sizeof(*cPointer));
return 0;
}
输出:
The size of the pointer is 1 byte.
相关文章
在 C 语言中使用 typedef enum
发布时间:2023/05/07 浏览次数:181 分类:C语言
-
本文介绍了如何在 C 语言中使用 typedef enum。使用 enum 在 C 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
C 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:114 分类:C语言
-
本文介绍了如何在 C 语言中使用 extern 关键字。C 语言中使用 extern 关键字来声明一个在其他文件中定义的变量
C 语言中的 #ifndef
发布时间:2023/05/07 浏览次数:186 分类:C语言
-
本文介绍了如何在 C 语言中使用 ifndef。在 C 语言中使用 ifndef 保护头文件不被多次包含 C 语言中的头文件用于定义同名源文件中实现的函数的接口。