第一种:
通过地址操作符取变量(也包括结构体变量)的地址
char c="a", *ptr_char;
ptr_char=&c;
第二种:
数组,不带方括号的数组名也等效于数组中的一个元素的地址,即数组名也可以看作是一个指针
char myname[31], *ptr;
ptr=myname;
or ptr=&myname[0];
第三种:
动态分配的一块内存,这时往往有类型强制转换,但应当注意内存不够时,可能返回一个空(NULL)指针。
struct complex {double real, imag;};
struct complex *ptr;
ptr=(struct complex *)malloc(sizeof(struct complex));
第四种:
函数,与数组名一样,函数名一个可以当作一个地址,可以把函数名付给一个指向函数的指针。函数名后面跟一个带圆括号的的参数意味计算函数的值,但仅有一个函数名则意味指向函数的指针。
double (*fx)()
double quad_poly(double);
fx=quad_poly;
通过地址操作符取变量(也包括结构体变量)的地址
char c="a", *ptr_char;
ptr_char=&c;
第二种:
数组,不带方括号的数组名也等效于数组中的一个元素的地址,即数组名也可以看作是一个指针
char myname[31], *ptr;
ptr=myname;
or ptr=&myname[0];
第三种:
动态分配的一块内存,这时往往有类型强制转换,但应当注意内存不够时,可能返回一个空(NULL)指针。
struct complex {double real, imag;};
struct complex *ptr;
ptr=(struct complex *)malloc(sizeof(struct complex));
第四种:
函数,与数组名一样,函数名一个可以当作一个地址,可以把函数名付给一个指向函数的指针。函数名后面跟一个带圆括号的的参数意味计算函数的值,但仅有一个函数名则意味指向函数的指针。
double (*fx)()
double quad_poly(double);
fx=quad_poly;