C语言指针和指针数组的使用

3 篇文章 0 订阅
1 篇文章 0 订阅

一、指针。

1、指针的概念:指针就是地址。

2、指针的大小是固定的(32位平台下是4字节,64位平台下是8字节)

3、指针(指针变量)也是一个变量,用来存储地址的变量,

4、指针也有类型。

有整形指针,字符指针,数组指针,结构体指针,函数指针等等。

整形指针:

int a=10;int *p=&a;*p=20;//则a的值,通过p指向a,通过a的地址改变了a的内容,此时a=20;

*p(对指针解引用),解引用是指针指向其对应的内容

字符指针:

char ch='p';char*q=&ch;*p='w';

数组指针:

数组指针也是指针,要和指针数组区分

指针数组是数组,数组的内容是指针。(int *p[10]指针数组)

数组指针指向的是数组的指针而已,(int (*p)[10])

4 、指针运算

指针加一,对其加上指针指向类型的大小。

比如int a[10]={0,1,2 ,3};

int *p=&a[0];//p+1也是指针,指向a[1];加一在内存上其实加了4(sizeof(int ))个字节。即*(p+1)=1;

二、数组名

我们一般学习指针的时候,总是会谈到数组,因为数组名也是指针。

数组名和&数组名的区别

int arr[10]//一维数组

arr代表的是数组首元素的地址。

&arr代表数组的地址。

两者的打印的地址值是一样的,但是意义不一样。

三、数组指针的使用

当二维数组当作参数被调有时会发生降维,降维成数组指针。

#include<stdio.h>

void Print_arr1(int arr[][3], int x, int y)
{
	for (int i = 0; i < x; i++)
	{
		for (int j = 0; j < y; j++)
		{
			printf("%d", arr[i][j]);
		}
		printf("\n");
	}
}
void Print_arr2(int(*arr)[3], int x, int y)
{
	for (int i = 0; i < x; i++)
	{
		for (int j = 0; j < y; j++)
		{
			printf("%d", arr[i][j]);
		}
		printf("\n");
	}
}
int main()
{
	int arr[2][3] = { 1,2,3,4,5,6 };
	Print_arr1(arr, 2, 3);
	Print_arr2(arr, 2, 3);
	return 0;
}

如上两种传参方式等价,运行结果一样。

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值