取地址符&也称引用,对应取值*也称解引用。
在c语言中调用函数要改变相应的值,需要加*;
如void change(int * i){
*i=5;}这是指针的间接访问。
指针的偏移:
定义了一个指针变量int*p;
*(p+1)此时的p会增加相应的函数变量类型大小的位置。
前++按运算的优先级来,后++是先忽略掉++,再进行值++。
当你把数组名传递给指针变量时,数组名时弱化为指针的,指向数组的第一个元素
malloc函数申请空间时,是在堆空间里面申请空间,返回的是无类型指针,所以进行强制类型转化。给一个指针赋值,通常使用strcpy。当你使用完这个指针,进行释放的时候free(指针名),同时要将指针置为NULL,不然会成为野指针。
函数调用的时候,功能函数存在栈空间里面,会随着函数调用结束而释放,堆空间则不会自动释放。
如char*print_stack(){
char c[]="i am print_stack";
gets(c);正常打印。
return c;}
int main(){
char*p;
p=print_stack();
puts(p);不能正常打印,在执行下一个函数的一瞬间,会清空上一个函数的值,滞留性。<