指针
指针是指向一个数据类型的地址,*表示一个指针,&表示取地址。
例子:
#include<stdio.h>
int main(void)
{
int a,b;
char c;
int *point_a,*point_b;
char* point_c;
char* point_d ="pointer";
a=100;
b=10;
c='c';
point_c=&c;
point_a = &a;
point_b = &b;
printf("a=%d,b=%d,c=%c,c=%d \n",a,b,c,c);
printf("point_a=%d,point_b=%d,point_c=%d\n,point_d=%d\n",point_a,point_b,point_c,point_d);
printf("*point_a=%d,*point_b=%d,*point_c=%d,*point_d=%d \n",*point_a,*point_b,*point_c,*point_d);
printf("point_d str=%s\n",point_d);
printf("*point_d str=%s\n",*point_d);
return 0;
}
运行结果:
$ ./pointer.exe
a=100,b=10,c=c,c=99
point_a=6277868,point_b=6277864,point_c=6277863
,point_d=4206640
*point_a=100,*point_b=10,*point_c=99,*point_d=112
point_d str=pointer
Segmentation fault (核心已转储)
从上面例子可以看到:
1)指针指向一个数据类型的地址,*表示指针类型,没有*表示一个指针变量,也表示所指变量地址,*+指针变量表示所指变量的内容
2)变量要获取地址,可以通过&取地址符获取。
3)char*类型的字符指针,指针变量通过整形输出是字符串地址,通过字符串类型输出是字符串内容
4)char*类型的字符指针,*+指针变量通过整形输出是第一个字符的ASCII码,通过字符串类型输出报段错误。