欢迎 on it road

C语言中,关于指针的一些说明:

  • 在使用它来存储任何变量地址之前,我们必须声明一个指针。
  • 指针变量可能属于任何数据类型,例如 int、float、char、double、short 等。
  • 普通变量存储值,而指针变量存储变量的地址。
  • C 指针(地址)的值总是一个整数。
  • 首先,C指针总是被初始化为null,例如:int *p = null。空指针的值为 0。如果 C 中的指针被赋值为 NULL,则表示它没有指向任何内容。
  • 符号用于获取指针指向的变量的值。
  • 可以将两个指针相减以了解这两个指针之间有多少元素可用。但是,指针加法、乘法、除法是不允许的。
  • 任何指针的大小都是 2 字节(对于 16 位编译器)。

C语言空指针

在声明时,如果我们没有在指针中指定任何地址,那么我们可以分配 NULL 值。
当指针未分配任何值时,它被称为空指针。

未分配任何值但为 NULL 的指针是 int \*p=NULL;
在大多数库中,指针的值为 0(零)。

C语言中,指向指针的指针

借助指向指针变量的指针,我们可以存储指针变量的地址。
这个地址指向一个变量的值。

指向指针变量的指针的一般格式:

data_type **p2;

指向指针变量的指针示例:

在这个例子中,我们在变量中分配了一个值。
我们已经定义了指针变量,它存储了那个变量的地址。
我们还定义了一个指向指针变量的指针,它存储指针变量的地址(变量的值)。

#include <stdio.h>
#include <stdlib.h>
     
int main()
{        
	int variable=100;
	int *p1;// 指向int数值的指针
	int **p2;// 指向指针的指针

	p1=&variable;// 保存x变量的地址;
	p2=&p1;  // 获取p1变量的地址;p1是一个指针

	printf("x变量所在内存的地址: %d \n",&variable);
	printf("p1变量保存的值: %d \n",p1);
	printf("*p1变量的值 is %d \n",*p1);
	printf("p1所在内存的地址: %d \n",p2);
	printf("p1变量保存的值 %d \n",*p2);
	printf("**p2变量的值 %d \n",**p2);  

	return 0;       
}

输出示例:

x变量所在内存的地址: 6422084
p1变量保存的值: 6422084
*p1变量的值 is 100
p1所在内存的地址: 6422072
p1变量保存的值 6422084
**p2变量的值 100
C语言指针

在C语言中,指针是其值是另一个变量的地址的变量。

C语言指针语法:

data_type *var_name;

C语言指针示例:

int *p; char *p;

这里,*用于表示它是一个指针变量不是普通变量。

借助 C 指针,我们可以轻松地执行一些 C 编程任务,例如动态内存分配,而这些任务如果不使用指针就无法执行。
因此,学习指针成为一个完美的 C 程序员变得很有必要。

C语言 指针算术

C 指针保存值的地址。
这就是为什么我们可以对指针变量执行一些算术运算。

以下是常用的 C 指针算术列表:

  • 增量
  • 递减
  • 加法
  • 减法
  • 比较

C 指针算术示例:

指针加法:

让我们看一个在指针类型变量中添加一些值的示例。

描述:
我们在一个变量中分配了一些值,而地址则存储在一个指针类型的变量中。
然后我们在指针类型变量中添加了一些值。

#include <stdio.h>       
int main()
{          
	int number=10;      
	int *pointer; // 指向int类型的指针
	pointer=&number; // 保存变量number的地址
	printf("变量pointer的地址是%u \n",pointer);  
	pointer=pointer+45;     
	printf("\n地址添加45之后 %d \n",pointer); 
	return 0;
}

输出示例:

变量pointer的地址是 6422084

地址添加45之后 6422264

1个int是4个字节。 所以添加45个字节后: 4*45 = 180 = 6422264- 6422084

指针减法:

让我们看一个从指针类型变量中减去某个值的示例。

描述:
我们在一个变量中分配了一些值,而地址则存储在一个指针类型的变量中。
然后我们从指针类型变量中减去了一些值。

#include <stdio.h>       
int main()
{          
	int number=10;      
	int *pointer; // 指向int类型的指针
	pointer=&number; // 保存变量number的地址
	printf("变量pointer的地址是%u \n",pointer);  
	pointer=pointer-5;     
	printf("\n地址减去5之后 %d \n",pointer); 
	return 0;
}

指针递增:

让我们看一个指针类型变量值递增的例子。

描述:
我们在一个变量中分配了一些值,而我们将它们的地址存储在一个指针类型的变量中。
然后我们完成了指针类型变量值的预增。

pointer=++pointer;

指针递减:

让我们看一个指针类型变量值递减的例子。

描述:
我们在一个变量中分配了一些值,而我们将它们的地址存储在一个指针类型的变量中。
然后我们就完成了一个指针类型变量的值的预减。

pointer=--pointer;

指针比较

让我们看一个比较两个指针类型变量的例子。

描述:
我们在两个变量中分配了一些值,同时我们将它们的地址存储在两个指针类型的变量中。
然后我们就完成了两个指针类型变量的比较。

#include <stdio.h>       
int main()
{          
	int variable_1=10;
	int variable_2=20;      
	int *pointer_1,*pointer_2;     
	pointer_1= &variable_1; 
	pointer_2= &variable_2;
	if(pointer_1 > pointer_2)
		printf("参数1的地址大于参数2");
	else
		printf("参数1的地址小于参数2");
	return 0;
}

C语言 指针的声明:

c语言中的指针可以用*(星号)来声明。

int *variable_1; // 指向 int  的指针
char *variable_2; // 指向 char 的指针
float *variable_3; // 指向 浮点数 的指针

C语言指针示例

下面是使用指针找出变量的地址的简单示例。

#include <stdio.h>
 int main()
{      
	int x=10;  
	int *p; 
	// & 符号用于获取变量的地址
	p=&x; 
	printf("变量x的地址是:%d \n",&x);  
	printf("变量x的地址是:%d \n",p);  
	printf("x变量的值 %d \n",*p);  
	return 0;      
}

输出示例:

变量x的地址是:6422084
变量x的地址是:6422084
x变量的值 10
日期:2020-09-17 00:09:17 来源:oir作者:oir