写段代码浅谈一下对指针的愚见

#include <stdio.h>

int main() {
	int a = 10;
	printf("a = %d\n", a);

	int* a_p;
	//a_p = 0;						//相当于a_p是空指针,与a_p = NULL含义相同。
	//a_p = a;						//不能将 "int" 类型的值分配到 "int *" 类型的实体。

	//int* temp = (int*)a;			//将a强转为指针后,该指针所指向的地址是未定义的。
									//因为a本身是一个整型变量,值是10,而不是一个合法的内存地址。
									//因此,这个指针指向的地址是不确定的,可能是一个无效的地址,
									//也可能是某个有效的地址,但这个地址不是a本身的地址。
									//因此,使用这个指针可能会导致程序崩溃或者产生未定义的行为。

	a_p = &a;						//正确的赋值,"&" 相当于某种意义上的 “类型转换”,即“取地址”。
	printf("a = %d\n", *a_p);		//正确的输出,"*" 也相当于某种意义上的“类型转换” 。
									// "*" 运算符是对指针变量 p 的 “解引用”。
									//鼠标停到 "a_p" 上方,可以看到 "a_p" 的数据类型是 "int *",
									//对一个 "int *" 类型的数据再使用一次 "*" 运算符,就回到了 "int" 类型。
									//综上,"*" 运算符有两种含义:定义指针、解引用,需要根据上下文来判断。

	//a_p = NULL;					//需要注意的是,当指针变量没有指向任何有效的内存地址时,
	//printf("a = %d\n", *a_p);		//对其进行解引用操作可能会导致程序崩溃或者产生未定义的行为。
									//因此,在解引用指针变量之前,需要确保指针变量已经指向了有效的内存区域。

	int b = 20;
	int* b_p = &b;					//正确的语法,相当于将声明和赋值的两句话合并在一起写了,当前是被允许的。
	printf("b = %d\n", *b_p);
	//*b_p = &b;					//编译报错:不能将 "int *" 类型的值分配到 "int" 类型的实体。
									//"int *" 类型的值指的是 "&b","int" 类型的实体指的是 "*b_p"(解引用)。

	int c = (int)b_p;				//如果把一个指针强制转换为 "int" 类型,输出结果是什么呢?
	printf("c = %d\n", c);			//强制转换后,输出的结果是该指针所指向内存地址的整数表示。
									//因为在32位系统中,一个指针占用4个字节,而一个 "int" 类型也占用4个字节,
									//因此可以将指针强制转换为 "int",以便将其作为整数进行处理。
									//但是,这个整数值并不具有实际意义,它只是一个内存地址的整数表示。


	printf("b_p = %p\n", b_p);		//如果要将一个指针转换为实际的内存地址,可以使用 %p 格式化符号进行输出。
									//这个结果是十六进制的。

	printf("b = %d\n", *&*b_p);		//如果这样套娃,输出结果会是什么呢?答案其实已经告诉你了。
	printf("%d\n", 10**&*b_p);		//没有忘记 "*" 运算符还可以是乘号吧?建议加个括号。
									//当然,不会有人这么写代码的。除非他真的很闲,而且以给别人制造麻烦为乐。

	return 0;
}

刚刚上完指针的第一节课,稍微梳理了一下,记点笔记。

想起Java中没有显式的指针概念,但动不动就给我爆一个NullPointerException,这就是被指针支配的恐惧吗?

内容概要:本文详细介绍了基于结构不变补偿的电液伺服系统低阶线性主动干扰抑制控制(ADRC)方法的实现过程。首先定义了电液伺服系统的基本参数,并实现了结构不变补偿(SIC)函数,通过补偿非线性项和干扰,将原始系统转化为一阶积分链结构。接着,设计了低阶线性ADRC控制器,包含扩展状态观测器(ESO)和控制律,用于估计系统状态和总干扰,并实现简单有效的控制。文章还展示了系统仿真与对比实验,对比了低阶ADRC与传统PID控制器的性能,证明了ADRC在处理系统非线性和外部干扰方面的优越性。此外,文章深入分析了参数调整与稳定性,提出了频域稳定性分析和b0参数调整方法,确保系统在参数不确定性下的鲁棒稳定性。最后,文章通过综合实验验证了该方法的有效性,并提供了参数敏感性分析和工程实用性指导。 适合人群:具备一定自动化控制基础,特别是对电液伺服系统和主动干扰抑制控制感兴趣的科研人员和工程师。 使用场景及目标:①理解电液伺服系统的建模与控制方法;②掌握低阶线性ADRC的设计原理和实现步骤;③学习如何通过结构不变补偿简化复杂系统的控制设计;④进行系统仿真与实验验证,评估不同控制方法的性能;⑤掌握参数调整与稳定性分析技巧,确保控制系统在实际应用中的可靠性和鲁棒性。 阅读建议:本文内容详尽,涉及多个控制理论和技术细节。读者应首先理解电液伺服系统的基本原理和ADRC的核心思想,然后逐步深入学习SIC补偿、ESO设计、控制律实现等内容。同时,结合提供的代码示例进行实践操作,通过调整参数和运行仿真,加深对理论的理解。对于希望进一步探索的读者,可以关注文中提到的高级话题,如频域稳定性分析、参数敏感性分析等,以提升对系统的全面掌控能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值