C语言-指针的学习

来源:互联网 发布:血源武器数据 编辑:程序博客网 时间:2024/06/06 03:15
  • 指针

指针是个地址,

指针变量:是存放地址的变量

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;//如果要用指针调用函数,先使指针指向函数,即将函数的入口地址,赋值给pc=(*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是指针数组;数组中的每个元素指向命令行中的一个字符串




0 0
原创粉丝点击