C语言指针基本概念及其指针变量的定义是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言指针基本概念及其指针变量的定义是啥相关的知识,希望对你有一定的参考价值。

指针是常见间接访问方式.指针就像一个快捷方式,它指向内存的一个地址,可以通过指针就可以间接的访问到数据。对于计算机,访问内存的方式有两种,直接访问和间接访问。直接访问通过就是通过变量名称去访问。指针概念是构成C/C++的重要元素之一,是变量的一种类型,存放的是指定类型数据的地址,而同类型变量存放的是数据。

指针变量:就是一个变量,其值是可变的,与整形变量、浮点变量等等的命名规则完全相同。 “指针”是概念,“指针变量”是具体实现。指针类型说明,即定义变量为一个指针变量; 指针变量名; 变量值(指针)所指向的变量的数据类型。

扩展资料:

与其他高级编程语言相比,C 语言可以更高效地对计算机硬件进行操作,而计算机硬件的操作指令,在很大程度上依赖于地址。指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓。

参考技术A 在C语言里,指针是一组内存的头地址,可以存一个数,一个字符,也可以是一个数组.
变量,就是像定义一个整型变量一样的,定义的是一个指针型变量.
参考技术B 指针是一个其数值为地址的变量(或更一般地说是一个数据对象)。
存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。
参考技术C 语言中,指针是一种类型,被称为“指针类型”。指针类型描述的是一个地址,这个地址指向内存中另外一个对象的位置。简单地说,指针表示的是它所指向对象的地址。
1、比较point,*point,&point三者的区别
对于int
*
point;
point:是指针变量,其内容是地址量。
*point:是指针变量的目标变量,即指针指向的那个变量,其内容是数据。
&point:是指指针变量本身所占据的存储地址。
2、指针与数组
用指针和数组名在访问内存中的数据时,他们的表现形式是等价的,因为他们都是地址量。
数组名表示整个数组的首地址,可以看作是固定地址的指针,不能被赋值。
数组名无须赋初值,而指针在使用前必须赋初值。
3、字符指针和字符串
字符串是一个字符数组,字符串以‘\0’结束。printf函数的%s格式输出字符时,是从给定的地址开始,到遇上第一个‘\0’字符时结束。
对字符指针初始化,是将字符串的首地址赋给指针。
4、指针型函数
所谓指针型函数,即返回值是指针(地址)的函数。
5、多级指针
指向指针的指针(**p)就是二级指针,指向指针的指针的指针(***p)是3级指针。
多级指针类似于间接寻址。
6、指向函数的指针
C语言中的函数名表示函数的首地址,即函数执行的人口地址。
定义形式:[存储类型][数据类型标示符](*指向函数的指针变量名)();
例子:
int(*fun)();//指向函数的指针

int
*
fun();
//指针型函数,注意(*
fun)括号不能少
7、动态指针
当需要一大片内存的时候,最好使用动态分配。
使用malloc函数:void
*
malloc(size_t
size)。
例子:
int
*
pn=malloc(10*sizeof(int));
double
*pd=malloc(10*sizeof(double));

基本类型指针变量及其大小

/*
	2022.06.07
	目的:
		强化指针基本概念--各类型指针变量及其大小
	理论:
		1.多字节变量,占多个存储单元,每个存储单元都有地址编号;
		2.c语言规定,存储单元编号最小的那个编号,是多字节变量的地址编号;
		3.无论是什么类型的指针变量,如果是在32的地址总线下,指针变量的大小都为4个字节;
		4.指针只能存放对应类型的变量的地址编号。

	功能:
		测试各类型变量的指针变量大小
*/

#include<stdio.h> 

int main(void)

	char* p1;       /* 字符指针 -- 字符型的数据地址 */
	short int* p2;  /* 短整型指针 */
	int* p3;        /* 整型指针 说明:因为是4个字节,所以每个字节都有一个地址编号,整个变量的地址以地址编号最小的为准 */
	long* p4;       /* 长整型指针 同上*/
	float* p5;      /* float型指针 同上*/
	double* p6;     /* double型指针 同上*/

	printf("zizeof(p1) = %d\\n", sizeof(p1));
	printf("zizeof(p2) = %d\\n", sizeof(p2));
	printf("zizeof(p3) = %d\\n", sizeof(p3));
	printf("zizeof(p4) = %d\\n", sizeof(p4));
	printf("zizeof(p5) = %d\\n", sizeof(p5));
	printf("zizeof(p6) = %d\\n", sizeof(p6));

	return 0;


/*
	程序运行结果:

		zizeof(p1) = 4
		zizeof(p2) = 4
		zizeof(p3) = 4
		zizeof(p4) = 4
		zizeof(p5) = 4
		zizeof(p6) = 4
*/

以上是关于C语言指针基本概念及其指针变量的定义是啥的主要内容,如果未能解决你的问题,请参考以下文章

C语言中“指针”和“指针变量”的区别是啥??

函数指针及其定义和用法,C语言函数指针详解

空指针是啥意思

C语言之指针学习

C语言不允许使用不完整的类型报错是啥意思啊

C语言二维数组指针变量是啥,int (*p)[2]啥意思