1.一个指针函数中,是不能返回局部变量的地址的,有时候可能会是正确的结果,那是因为你只运行了一个程序,那个内存空间还没有被其他程序所占用,当你运行多个程序的,返回的可能是一个别的程序的数值。
int* mistake()
{
int a=45;
return &a;
//这种写法是错误的,不能返回局部变量地址
}
int main()
{
int* p= NULL;
p=mistake();
printf("%d\n",*p);
return 0;
}
2.一维指针只能指向变量地址,二维指针只能指向一维指针。三维指针只能指向二维指针地址
3.指针指向的数据类型要和所指向变量的类型一致。例如:char* pc;char c='d';
int a; int* pa;
pc=&a;//错误;
pc=&c;//正确
4.void swap(int *a,int *b)
{
int *t;
t=a;
a=b;
b=t;
}
int main()
{
int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
return 0;
}
这个相当于只是把指针P q指针赋值一份给指针a b,在函数中交换的是指针a b的地址。并没有修改x ,y的值,p q 的指向也没有改变。