当前位置:   article > 正文

C语言之指针基础_c语言中ardd0的意思

c语言中ardd0的意思

C语言之指针基础

1.指针的定义

指针的实质是变量变量,因此指针叫做指针变量
指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。

2.指针的理解和使用

#include <stdio.h>

int main(void)
{
	int a=6;
	
	//指针的定义
	int  *p1;		//定义指针变量p1,p1指向一个存有int类型数据的地址
	char *p2;		//定义指针变量p2,p2指向一个存有char类型数据的地址
	short  *p3;		//定义指针变量p3,p3指向一个存有short类型数据的地址
	double *p4;	//定义指针变量p4,p4指向一个存有double类型数据的地址
	
	//指针与变量地址关联
	p1=&a;   		//p1与a的地址关联起来,p1指向a
	
	//指针解引用
	*p1=3;   		//(*p)就表示p1指向的地址存的值,这里即为a存的值
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

使用步骤:
(1). 指针定义
(2). 指针与变量地址关联
(3). 指针解引用

3.与指针有关的符号

3.1指针定义使用过程中的符号

#include <stdio.h>

int main(void)
{
	int a=6,b=0;
	int *p1;  	 	//*表示定义了一个指针,这个指针的名字叫p1
	p1=&a;  		//&是取地址符,表示取变量a的地址,p1实质是地址,&a也是地址,因此此关联正确
	b=*P1;  		//这里的*是解引用,表示指针p1指向的变量存储的值,上一步p1与a的地址关联起来了,因此*p1的值为6
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.2 a,a[0] ,&a ,&a[0]符号的含义

#include <stdio.h>

int main(void)
{
	int a[5];
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如上述定义,讨论a a[0] &a &a[0]符号的含义

必备理论:C语言中的左值与右值https://blog.csdn.net/m0_46672658/article/details/115384413

(1)a就是数组名。
a做左值时表示整个数组的所有空间,又因为C语言规定数组操作时要独立单个操作,不能整体操作数组,所以a不能做左值;
a做右值表示数组首元素的首地址。a做右值等同于&a[0];

(2)a[0]表示数组的首元素。
a[0]做左值时表示数组第0个元素对应的内存空间;
a[0]做右值时表示数组第0个元素的值。

(3)&a就是数组名a取地址,是数组的地址。
&a不能做左值;
&a做右值时表示整个数组的首地址。

(4)&a[0]是数组首元素的首地址。
&a[0]表示数组首元素首地址,是个常量所以不能做左值;
&a[0]做右值时就表示数组首元素首地址的值,等同于a做右值。做右值时&a[0]等同于a。

4.指针与数组

指针访问数组的方法

#include <stdio.h>

int main(void)
{
	int a[4]={1,2,3,4};
	int *p;
	p=a;
	//p=&a[0];
	//p=&a;     //报警告assignment from incompatible //pointer type [enabled by default]

	printf("a[0]=%d\n",*p);
	printf("a[1]=%d\n",*(p+1));
	printf("a[2]=%d\n",*(p+2));
	printf("a[3]=%d\n",*(p+3));
	printf("a[4]=%d\n",*(p+4));
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

5.指针与传参

函数传参时,形参是可以用数组的,函数形参是数组时,实际传递是不是整个数组,而是数组的首元素首地址。即函数传参用数组来传,等价于传递的是指针(指针指向数组的首元素首地址)。

以上内容源于朱有鹏《c语言内核深度解析》学习笔记和网络,如有侵权,请告知删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/算法设计者/article/detail/63232
推荐阅读
相关标签
  

闽ICP备14008679号