参考了以下文章
https://blog.csdn.net/Noriaki/article/details/82593458
https://blog.csdn.net/qq_41620518/article/details/81143414
如何理解指针的使用
//下面代码是我刚接触指针犯的一些错误,下列代码是会报错的
int *a;
a=100;
cout<<a;
//后来学聪明了,知道不能直接给指针赋值,但是还是错了,程序没有任何输出
int main(){
int *a;
*a=100;
cout<<a;
}
//使用指针是需要先分配空间的,但是输出的不是我们想要的“100”
int main(){
int *a=new int;
*a=100;
cout<<a;
}
//这才是我们想要的结果
int main(){
int *a=new int;
*a=100;
cout<<*a;
}
小结:需要注意的是在使用int *a=new int;定义指针时,不要把“*a”理解为指针,因为“a”才是我们定义的指针。
*和&的区别
- *在定义的时候,表示定义指针类型,其他时候,表示对指针进行取值操作
- &表示取地址,可以用来取变量的地址,也可以用来取指针的地址
"->" 和" ."的区别
- 可以把“->”和“.”都理解为中文中 “的” 的意思。
- “->”是跟在结构体指针后面的,表示成员的提取
- “.”是跟在结构体对象后面的,表示这个对象“的”某一个属性
使用指针是需要先分配空间的
Student *stu=new Student[n];//为*stu分配Student[n]大小的空间,声明指针才需要分配空间,
//声明变量则不需要,因为编译器会自动分配并管理
指针当作参数传递给函数是应该怎么做?
可以简单把函数的形式参数理解为这个函数本身的一个属性,然后当外部传参数进来的时候,就会把外部的参数赋值给函数本身的属性。
指针可以分为2种,一种是分配了空间的,是实实在在存在的指针。
另外一种就是,没有分配空间的指针,这类指针一般是在定义的时候,把已存在的指针赋值给它,作用是用来操作那个已经分配空间的指针。
如果函数的形式参数是指针,那么这个形式参数一定是第二种指针。
以下例子来自作者:Noriaki
https://blog.csdn.net/Noriaki/article/details/82593458
1.下边看第二个例子
这个是虽然想传址,但是方法错了,那么请看下一个例子(这是传址的正确使用方法)
2.请看第三个例子(传址的正确使用方法)