指针必须要初始化(即使是结构体指针),不然就算不出现编译错误,在运行也会出现错误。
1、void* 通常来说有三种用法,详情请百度。
2、在调用函数中的指针地址和主函数中指针地址已经不同,只是其中储存的地址都指向了a而已。
#include<stdio.h>
#include<stdlib.h>
void Try_change(int *p) {
int b = 7;
printf("Try p=%p &p=%p
", p, &p);
p = &b;
}
int main() {
int *p = NULL;
int a = 5;
p = &a;
printf("main p=%p &p=%p
", p, &p);
Try_change(p);
printf("%d
", *p);
system("PAUSE");
return 0;
}
运行结果:
3、关于指针的指针(二级指针)
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
int **point = &p;
输出**point,结果为1,等价于*p;
详情请参见:
http://blog.csdn.net/g200407331/article/details/52610150