C语言:指针与指针变量

1.指针和指针变量的区别
(1)我们在定义一个变量a时,变量a本质上代表一个存储单元,CPU通过该存储单元的地址访问该存储单元中的数据。
所以a即会表示存储单元的地址,也代表存储单元中的数据。
(2)指针和指针变量的区别
指针:系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”.如:int i= 5;则存放变量i的内存单元的地址 &i 被称为指针。地址(常性值)。
指针变量:指针变量是存放前指针的变量,也可以定义为指针变量是存放变量所占内存空间首地址的变量。所以说,指针变量就是存放指针的变量。值。
2.定义指针变量时,类型对指针变量起两个作用
(1)解析存储单元大小
(2)指针变量加1能力
3.指针
(1)解引用的值
(2) 自身的值
4.对指针指向的理解

#include
#include
void fun(int* p)
{
	int a = 200;
	*p = 100;//(*p即为x本身)
	p = &a;//
}
int main()
{
	int x = 0;
	int* s = &x;
	fun(s);//p指向的地址,s和p都为指针,p存放的是x的地址
	printf("%d %d \n", x, *s);//x=100,*s=100;
	return 0;
}

5.指针分类

#include
#include
int a = 10, b = 20;
int* p1=&a;//普通指针

const int* p2 = &a;
int const* p3 = &a;//常性指针

int* const p4 = &a;//自身为常性的指针

const int* const p5 = &a;//指向和自身都为常性的指针

6.循环数组移动(将元素左移一位)

#include
#include
#include
void Print_Ar(const int* br, int n)
{
	if (br == nullptr || n < 1)return;
	for (int i = 0; i < n; ++i)
	{
		printf("%d ",br[i]);
	}
	printf("\n");
}
void Left_Move_Array(int* br, int n)
{
	if (br == nullptr || n < 1)return;
	int tmp = br[0];
	for (int i = 0; i < n - 1; ++i)
	{
		br[i] = br[i + 1];
	}
	br[n - 1] = tmp;
}//1.定义变量,把0下标的值放进去;2.利用循环语句,将数据进行左移操作3.将第一个元素放在最后面,完成左移
int main()
{
	const int n = 10;
	int ar[n] = { 12,23,34,45,56,67,78,89,90,100 };
	Print_Ar(ar, n);
	Left_Move_Array(ar, n);
	Print_Ar(ar, n);
}

7.将元素右移一位

#include
#include
#include
void Print_Ar(const int* br, int n)
{
	if (br == nullptr || n < 1)return;
	for (int i = 0; i < n; ++i)
	{
		printf("%d ",br[i]);
	}
	printf("\n");
}
void Left_Move_Array(int* br, int n)
{
	if (br == nullptr || n < 1)return;
	int tmp = br[0];
	for (int i = 0; i < n - 1; ++i)
	{
		br[i] = br[i + 1];
	}
	br[n - 1] = tmp;
}//1.定义变量,把0下标的值放进去;2.利用循环语句,将数据进行左移操作3.将第一个元素放在最后面,完成左移
void Right_Move_Array(int* br, int n)
{
	if (br == nullptr || n < 1)return;
	int tmp = br[n - 1];
	for (int i = 2; i < n; ++i)
	{
		br[i] = br[i - 1];
	}
	br[0] = tmp;
}//程序有问题
int main()
{
	const int n = 10;
	int ar[n] = { 12,23,34,45,56,67,78,89,90,100 };
	Print_Ar(ar, n);
	Right_Move_Array(ar, n);
	Print_Ar(ar, n);
}

你可能感兴趣的:(C语言,c语言)