在OOP语言中,比如Java是没有指针这个概念的。或者说,在Java中,任何成员变量全部是指针。
但是在C语言中,有指针的概念。而且,C必须使用指针,不然很多东西无法表达了。那么,如何理解int * p_num = #呢?
int num = 9; int * p_num = #上面这两句代码,就完成了一个指针初始化的操作。但是上面这句话,很容易给人误导。让人困惑到底是给*p_num赋值为&num了还是给p_num赋值为&num了。但是,如果写成这样的:
int num = 9; int * p_num; p_num = #就很容易理解了。其实上面和下面这两种形式表达的含有是相同的。
但是如果是使用下面的方式,我们在使用*p_num的时候,就很放心地知道,当前这个变量的值是num,也就是9.
再看如何利用指针进行数据操作:
// 间接运算符 *p_num = 123; // *p_num 表示 取地址p_num的空间 // 然后是赋值运算,将123 存放到P_num所指向的空间 //这也就表明了现在 *p_num完全可以替代num进行对该空间做任何操作!完整程序如下:
#include <stdio.h>int main(void){ // 指针的赋值方式一// int num = 9;// int * p_num;// p_num = #// printf("*p_num = %d , p_num = %p",*p_num,p_num); // 指针的赋值方式二 int num = 9; int *p_num = # int* p1_num = # printf("*p_num = %d , p_num = %p , p1_num = %pn",*p_num,p_num,p1_num); // 间接运算符 *p_num = 123; // *p_num 表示 取地址p_num的空间// 然后是赋值运算,将123 存放到P_num所指向的空间// 这也就表明了现在 *p_num完全可以替代num进行对该空间做任何操作! printf("*p_num = %d , p_num = %p , p1_num = %p , *p1_num = %dn",*p_num,p_num,p1_num,*p1_num); return 0;}完整输出如下:
*p_num = 9 , p_num = 0029ff04 , p1_num = 0029ff04*p_num = 123 , p_num = 0029ff04 , p1_num = 0029ff04 , *p1_num = 123Process returned 0 (0x0) execution time : 0.463 sPress any key to continue.