1.和在使用一个数据之前必须要对数据进行初始化一样,否则可能会使得数据的值不确定,那就会给程序埋下很大的隐患,在使用指针之前也必须要对指针进行”初始化“
例程1.1
#include<stdio.h> int main(void) { int *x; *x = 3; return 0; }
这样的代码可能会出现段错误,因为x指针不知道会指向哪一块内存,使用*x=3来更改那块内存的数据有可能访问到非法内存导致段错误,当然也有可能因为没访问到非法内存而没有产生段错误,但是一个健壮的程序不允许存在这样的隐患。
例程1.2
#include<stdio.h> #include<stdlib.h> int main(void) { int *x; x = (int *)malloc(sizeof(int)); //上面一行代码相当于对指针的初始化,使得指针指向一个合法的内存区域 *x = 3; //上面这行代码的方式就不会有访问非法内存的可能,就不会产生段错误 free(x); return 0; }
2.变量名和指针
例程2.1
#include<stdio.h> int main(void) { int x=1; int *px1, *px2; px1 = &x; px2 = &x; //上面这两行代码是的指针px1、px2指向同一块内存,也就是都指向int型整数x,也就是*px1、*px2、变量名x都是代表同一块内存的数据 int y = x; //这行代码为y分配了一块内存,并将x的值复制到y的所在内存中,而不是x和y共享一块内存 return 0; }
时间: 2024-10-27 13:15:39