0
点赞
收藏
分享

微信扫一扫

人形机器人建模与控制(二) - 高级运动学和动态建模

E_topia 2024-05-27 阅读 15

关于const

  1. C语言中的const修饰的变量为只读变量(只读的是这个变量,不是内容,意味着内容可修改)
    无法通过变量修改内容,但是可以通过指针变量修改
 #include <stdio.h>
int main(int argc, char *argv[])
{
const int num = 10;
//c语言中使用const修饰变量为只读变量
//此时无法通过变量名修改其值
//num = 11;
//但是可以通过指针变量修改值
int *p = &num;
*p = 11;  //赋给*p值后,num的值也发生变化,这算是一个C语言中的漏洞,所以在C++中进行了改进.
printf("%d\n",num);
return 0;
}	
  1. C++中的const修饰变量,如果以常量初始化该变量,不会立即开辟空间,而是生产符号常量表,对其取地址会开辟新的地址.

代码示例:C++

#include <iostream>
#include <string>
using namespace std;
int main()
{
    const int num =23;
    //这叫常量初始化,除此以外所有初始化都不会开辟新空间,结果为*p!=num
    
    //int a = 10;
	//const int num = a; 
	 //这叫变量初始化,会为num开辟新空间,结果永远是*p==num
    
    int *p=(int *)&num;
    *p=12;
    cout<<num<<endl;
    //虽然之前已经给*p赋值,但是num的值没有发生变化,因为*p重新开辟了空间.
    cout<<*p<<endl;
	return 0;	
}

关于引用&

引用实际上是对同一片内存空间取别名,
1.必须在声明引用变量时进行初始化。
2.不能有 NULL 引用。必须确保引用是和一块合法的存储单元关联。
3.引用前没有数据类型时为取地址
4.引用作为返回值时,确保当函数中执行完毕后,引用关联的内存一定要存在

#include <iostream>
#include <string>
using namespace std;

int add(int a,int b)
{
    return a+b;
}
int& test05() //引用作为返回值
{
static int x = 10;
int& p = x;
return p;
}
int main()
{
    int num =23;
    int we=11;
    int &p=num;   //  (1)一旦初始化,p将 一直是num的引用,不会改变.而且,必须初始化
    p=we;  //p依然是num的引用,这里只是改变p和num的值,并没有改变引用的指向.
    we=44;   //we改变为44,p和num依然是11

    int str[12]={1,2,3,4,5};
    int (&str1)[12]=str;  //引用数组
    cout<<str1[1]<<endl;

    int (&add1)(int a,int b)=add;    //引用函数
    cout<<add1(1,2)<<endl;
	
	int *p=&we;
	int *&q=p;  //对指针变量的引用模拟/
    

    cout<<num<<endl;//输出为11
    cout<<p<<endl; //输出为11

	
	return 0;	
}
举报

相关推荐

0 条评论