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语言指针基本概念及其指针变量的定义是啥的主要内容,如果未能解决你的问题,请参考以下文章