- 指针
指针是个地址,
指针变量:是存放地址的变量
Int *point1;
定义指针变量时必须指定基类型,用来指定此指针变量可以指向的变量类型,因为不同类型的数据在内存中所占的字节数不同,必须知道数据的类型,才能按存储单元的长度和数据的存储形式正确的取出数据
Int *p; //标示定义了一个指针变量,*标示该变量是指针变量,指向p的指针
P=&a;
Printf(*p); //标示了指针变量p所指向的变量
1、
Char *string=”I LOVE CHINA”;
printf ("%s",string); //通过字符数组名或字符指针可以输出一个字符串;
C语言对字符串常量是按字符数组处理的,这个字符数组没有名字,不能通过数组名,如string[5]引用,只能通过指针引用。此时string[5]的含义是string所指字符后面5个字节的内容,没有意义。
for(p=a;p<(a+10);p++){ //p++是指向下一个元素,增加了一个元素的字节
printf("%c",*p);
}
2、
int a[10]={1,3};
printf("%d",a); //错误的 ,对于一个数值型数组,是不能通过数组名输出它的全部元素的。
3、
char *p="school";
char c[]="go to ";//c="21"是错误的;可以在定义的时候对数组赋初值,但不能用赋值语句对数组整体赋值。
p=c;//c=p是错误的 ;数组名是个常量,不能对它进行赋值;可以对指针赋值;
- 函数指针 int (* p)(int,int) ;
是函数的入口地址
定义:
int (* p)(int,int) ;//p是指向函数的指针,该函数返回一个整型,;它可以指向函数的类型为整型,且有两个整型参数的函数
使用:
p=max;//如果要用指针调用函数,先使指针指向函数,即将函数的入口地址,赋值给p
c=(*p)(a,b);//用该指针变量调用函数的时候,用(*p)代替函数名即可
- 返回指针值的函数 int * p(int,int) ;
返回值的类型为指针类型
- 指针数组 即: int *p[4];其元素均为指针类型(优先级 []>*,*是右结合)
适合于指向若干个字符串
int *p[4]={"adad","ds","a"};
int (*p)[4];为 指向 包含4个元素的 一维数组的指针变量
- 指向指针数据的指针 int **p;
- void指针 void *p;
不指向任何类型的数据;在将它赋值给另一类型的指针变量时,由系统对其进行类型转换,使之适合被赋值的变量的类型
int a=2;
void *p=&a;
printf("%d",*p);//错误;赋值后,p得到a的纯地址,但并不指向a
- int main(int argc,char *argv[])
argc是参数的个数,argv是指针数组;数组中的每个元素指向命令行中的一个字符串