作者:小白石 | 来源:互联网 | 2023-10-11 08:02
关于指针的浅析
下面我们来认识下指针:
1:首先谈一下指针的作用:
a:指针是C语言中广泛应用的数据类型,运用指针编程是C语言最主要的风格之一
b:指针能够用来有效表示复杂的数据结构
c:指针能很方便操作数组字符串
d:指针能用于函数传递参数,减少内存的开销
e:指针能够像汇编一样处理内存地址,从而编写出精炼高效的程序
int a = 10;
获取a的地址printf(“%p\n”,&a);
变量的地址:
1:内存是以字节为 单元进行编制的,内存中的每个字节都对应一个地址,通过地址能够找个每个字节
2:变量对应内存中的一个存储单元,该单元占用一定的字节数,用这个 存储存储单元的第一个字节的地址表示变量的地址
什么是指针和指针变量:
指针变量:将&a存储到变量中,这个变量 就叫做指针变量,存放另外一个变量地址的变量叫做指针变量,指针变量用于存储变量的地址,指针变量的数值就是变量的地址
指针:指针变量中存储的变量的地址就叫做指针,指针就是地址
如:int *pointer = &a;
*代表的是指针元算服
pointer为指针变量
&取地址运算符
&a为变量的地址
p中存储的地址就是指针
int main(int argc,char* argv[]){int a = 10; /* *定义指针变量pointer,指向int类型*指针变量是会去分配内存大小的,而指针则是不会去分配内存空间的*/int *pointer = &a; printf("a address = %p\n",&a);printf("p value=%p\n",pointer);char ch = 'c';char *ch_pointer = &ch;printf("ch value = %c\n",ch);printf("ch address = %p\n",ch_pointer);/* *此处的*代表的是指向运算符,即翻译为指向ch_pointer中存储地址的这一块区域*/printf("ch value2 = %c\n",*ch_pointer);printf("ch_pointer size = %d pointer size = %d\n",sizeof(ch_pointer),sizeof(pointer));return 0;
}
其结果 为:
a address = 0x7fff6f7d73dc
p value=0x7fff6f7d73dc
ch value = c
ch address = 0x7fff6f7d73db
ch value2 = c
ch_pointer size = 8 pointer size = 8
由此我们可以看出来,变量a的地址与pointer中存储的值是一样的,说明,指针变量中存储的值其实就是第一个变量的地址,同时指针变量的大小是不会随着其指向类型的改变而改变的,在 这里是8个字节的
指针变量的定义语法如下:
类型说明符号 *指针变量名;
1:类型说明符为本指针所指向的变量的数据类型
2:*为指针运算符
3:根据变量类型的不同,指针可以是整形指针,字符型指针,浮点类型指针,数组指针,和其他类型指针
如: int *p1; //整形指针
char *p2; //浮点形指针
float *p3; //浮点型指针