C语言中的
int *np = (int *)malloc(sizeof(int));
相当于C++中的
int *np = new int;
释放指针
free(np);
delete
np;
分配n个连续的空间地址:
int *np = (int *)calloc(n, sizeof(int));
int *np = new int[n];
指针赋值:
int a = 10;
int* p = &a;
*p = 20; //等于给a赋值
int& b = a; //变量b和变量a使用了同一个地址,相当于同一个变量,此表达式中,a不能使常量
指针加一,代表指向的下一个数据,同类型的指针相减,代表的是他们之间有多少个同类型数据(*a,*(a+1)),注意数组与指针的关系,超出数组的指针叫做“野指针”。
注意值传递与指针传递的区别:
void function(int a, int b)
void function(int *a, int *b)
注意一些常量的区别:
const int n = 10;
const int *pc; //可以指向常量和变量,不能间接修改数据,常量只能用其指向
int *const pd = &a; //只能指向非const变量,并且指向地址不能改变
const int *const pd = &n; //能指向常量和变量,指向地址不能改变
只读参数:
void change(const int *a)