指针是一个值为内存地址的变量
ptr = &var; //将变量var的地址赋给变量ptr,变量ptr就是指向变量var的指针而对于ptr和&var来说,ptr是一个变量,&var则是一个常量,变量可以被赋值改变,而常量不可以
当得到一个指针时,就可以得到这个指针所在的值
var1 = *ptr //此时var1==var符号*,叫间接运算符,也叫取值运算符,用于获取指针所指向的地址中存储的值
也就是说,ptr = &var 和 var1 = *ptr 与 var1 = var是等效的
最好不要有以上行为,由于ptr没有被初始化,因此它的值(指针的值是地址,即地址是随机的)是随机的,不知道5会被存储到什么地方,可能无害,也可能会覆盖程序的数据(指向了程序的某个变量的地址),导致程序错误甚至崩溃。
因此,在声明一个指针的同时,最好将其初始化(指明该指针所指向的变量地址)
2. 若不希望函数改变数组,那么就对函数的形参使用const int sum(const [], int); int sum(const int arr[], int n){ //code }由于数组通过参数的方式传递给函数进行操作的时候,传递的是数组的地址,因此函数对数组的操作会改变数组的内容。
使用const关键字,就是告诉编译器,函数应当把arr所指向的数组作为包含常量数据的数组对待
==注意:== 这样使用const并不代表原始数组是固定不变的,这只是说明函数在处理数组时,应该把数组当作固定不变的