栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-09-30:室友自学c语言的第二天--指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-09-30:室友自学c语言的第二天--指针

看了一些指针的博客资料,也没有弄懂,大概要多敲几次才会明白吧。

下面是我自己对指针的理解(代码没运行过)

小明要帮多个同学拿鞋子,如果一个个打开鞋柜确认,太耗时间。于是小明向同学索要鞋箱的号码,同学给了他纸条,纸条就是指针。
鞋箱可以是连续的,也可以是非连续的,有纸条,小明寻找鞋子的速度就快。(引用)
*p=&shoe
纸条箱子就是指针数组,指向纸条柜子的纸条就是二重指针
**pp=*p
假如两个同学的鞋子要交换鞋子,不用考虑其他的情况下,可以互换纸条,节省了拿鞋子,换鞋子的功夫。(交换)
*p1=&shoe1
*p2=&shoe2

*temp=*p1
*p1=*p2
*p2=*temp

_______________________________________________________________________:

基础知识:

1.指针的地址是四个字节,无论指向char,float还是struct都是四个字节。

2.指针未指向时,它地址的值是随机的(野指针),最好让它指向一个NULL,也就是地址0,制作空指针。

3.取地址,&是取地址符,但有些情况可以不用&,比如数组名其实就是数组第一个元素的地址,函数名就是这个函数的地址。(%p出来的非真正意义上的物理地址,而是虚拟地址)

4.解地址(解应用),从指针指向的内存块里读取内存数据,对一个指针解地址就是在它前面加一个*号,编译器通过指针的类型,来判断一次应该取多少字节,如果是char,一次取一个字节,如果是int,一次取四个字节。

5.c语言规定,指针相减自动除以sizeof(指针类型)

6.不能对void指针进行解地址,要先进行强制转化

下面是代码部分(能run)

因为太多printf就把它变成P了

#include 
#define P printf

如果指向的是整形变量

/指向整形变量
	int shoe=11;
	int* p;
	p = &shoe;//&shoe就是shoe的地址
	P("%dn", *p);	// 11,p指向的变量
	P("%dn", p);	// 指针本身的地址,随机。

要注意*p才是p指针指向的变量,输出p是输出p指针的地址

直接用p=shoe是不被运行的,p需要的是一个地址,得用&shoe

指向数组,代码如下

//指向数组
	int sc[2]{0,1};
	int *p2;
	p2 = sc;
	P("%dn",*p2);	// 0,a[0]
	p2 = &sc[0];
	P("%dn", *p2);// 0

数组名sc也是一个地址,是数组第一个元素的地址。与sc[0]输出结果相同,但两者又有本质的不同,指向sc是指向整个数组,指向sc[0]是指向一个元素

指针与数组的关系

//指针与数组
	int v;
	v = sc[1];
	P("%dn", v);
	v = *(sc + 1);
	P("%dn", v);	//都等于1,sc[1]与*(sc+1)结果相同。数组名本身也是一个指针
	p2 = sc;
	P("%dn", * (p2 + 1));//用*(p2+1)访问数组第二个元素

然后是指针本身的运算

int* p3 = &sc[1];
	P("%dn",p2); //3865696
	p2++; //加上一个p2所指类型字节大小的地址,int即4字节
	P("%dn",p2);//3865700差4,一个int字节
	P("%dn", *p2); //1 ,a[1]
	p2--;
	P("%dn", *p3 - *p2);//1,也就是a[2]-a[1],指针不能相加

注意指针不能相加,会指向未知的地址。

指向结构体

struct shoeshop
	{
		int shoe1;
		int shoe2;
		int shoe3;
	};
	struct shoeshop a ={10,20,30};
	struct shoeshop* p4;
	p4 = &a;
	p4->shoe1;
	p4->shoe2;
	p4->shoe3;

但是我想分别打印shoe1,shoe2,shoe3的值时却出了问题,不知道为什么

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号