C语言中的指针定义2025年3月17日 | 阅读 7 分钟 什么是指针?指针是C语言中一种特殊的变量,用于存储另一个变量的地址。指针可以是任何数据类型,如int、float、char、string、array或function。在C语言中,指针用星号(*)表示。指针的大小取决于架构。例如,对于32位机器,指针的大小为4字节;对于64位机器,指针的大小为8字节。 C语言指针的特点
C语言中声明指针的语法
指针数组C语言中的指针数组是多个指针的集合,表示如下:
在C语言中,数组和指针是相关的,因为数组名像一个指针常量。指针常量的值是第一个元素的地址。例如,我们有一个名为ptr的数组,那么ptr和&ptr[0]表示相同的含义,我们可以同时使用它们。 将此值赋给指向数组的非const指针,我们可以使用此指针访问数组的元素。 让我们看一个使用int数据类型的指针数组的例子。 输出 Elements of the array are 1 2 3 4 5 这是使用string数据类型的指针数组的另一个示例。 输出 The locations of the strings are: 4310680 4310684 4310688 4310692 4310696 '&'和'*'运算符'&'运算符-当你给一个变量赋值时,它存储在一个特定的内存地址。要访问该内存地址,我们使用'&'运算符。因此,我们可以说'&'运算符,也称为“取地址”运算符或引用运算符,用于给出变量的内存地址。 ![]() 输出 0x77fee2365f099 // memory address of the variable 'marks'. (Note: Output varies from computer to computer as memory address assigned by your computer will be different.) 注意:%p是用于打印指针值的格式说明符。这里 &marks是一个指针。 '*'运算符- '*'运算符或解引用运算符用于获取给定地址处变量的值。'*'运算符基本上有两个功能。在声明中使用'*'时,它用于创建指针;否则,它用作解引用运算符。下面是一个展示'*'运算符两种功能的示例。 ![]() 输出 75 C语言中指针的类型![]() 空指针空指针是没有赋值的指针。空指针不指向任何函数或对象。这意味着该指针未被赋值为任何有效内存地址。 输出 The value inside the pointer ptr is: 0 野指针当你没有初始化指针时,该指针称为野指针。这种类型的指针可能导致程序崩溃,因为指针将被赋值为随机内存地址。 void指针void指针是没有特定数据类型的指针。它使用void关键字创建。 悬空指针当你使用free()函数释放指针的内存时,该指针称为悬空指针。 C语言中指针的算术运算并非所有操作都可以对指针执行,只有少数一组操作可以。指针算术是指可以对指针执行的操作集合。它不同于我们用于常规数学表达式的操作。操作如下:
表示为ptr++; 输出 Value of *ptr = 20 Value of *ptr = 30 Value of *ptr = 40
表示为ptr--; 输出 Value of *ptr = 40 Value of *ptr = 30 Value of *ptr = 20
让我们看一个例子 假设val的内存地址是200,那么newval的地址将是208,而不是202,即ptr+2*sizeof(int),其中int的大小是4字节。
输出 val2 is greater than val1 指针的优点
指针的缺点
下一主题Staff Definition |
我们请求您订阅我们的新闻通讯以获取最新更新。