美文网首页
c语言指针

c语言指针

作者: 赤赤有名 | 来源:发表于2016-05-21 11:59 被阅读179次

          前几天去面试,没想到出的面试题都是c语言指针方面的,被虐的体无完肤,无奈大一的时候c语言学的不好,于是回来痛下决心,决定重新认识指针,把自己理解的写下来。

    一、内存单元第一个字节的地址为首地址,在C语言中称为指针

    指针的基本操作:

    (1)&取地址符,取变量在内存单元中的首地址。&操作的对象必须是内存单元,如变量、数组、元素等

    (2)*是间接访问运算符,间接访问指针所指向的对象。*运算符的操作对象必须是指针(地址)

    int x,*p,p=&x;  *p=10;(可以这么理解,*p是一个数值,而P是一个地址)  

    *p表示通过p间接访问x,*p就是p指向变量即x,因此*p与x是同一个变量。

    二、指针和数组

    数组值就是这个内存单元的起始地址即指针值,指向数组的第一个元素(即下标0)。因此数组的访问可以用指针访问。

    int a[6]={1,2,3,4,5,6},*p;

    p=a或&a[0];

    *p实际上就是数组元素a[0].

    C语言通过数组或指针数组元素有两种变现形式:下标表示和指针表示。那么对于i+1个元素的表示分别可用下标a[i]和指针法*(a+1)

    a[0]=10;a[3]=10;

    *a=10;*(a+3)=10;                        //指针法引用第一个和第四个元素分别赋值10


    #include#includeint main()

    {

    int a[6],i,s,*p;

    printf("please input data:\n");

    for(i=0;i<6;i++)

    {

    scanf("%d",&a[i]);

    }

    s=0;

    for(p=a;p<a+6;p++)

    {

       s+=*p;//这里要加上*p,不能加上p;

    }

    printf("s=%d\n",s);

    }

    三、指针与字符串

    字符串是由若干个字符组成的字符序列,以‘\0’作为串的结束符。

    (1)字符串指针:

    字符串第一个字符的地址就是字符串指针,字符串指针的类型是字符指针。(字符串指针实际就是一个字符串指针,指向字符串的第一个字符,而不是整个字符串)

    (2)用字符串指针指向一个字符串

    用字符串指针指向一个字符串,就是使字符串指针指向指针指向字符串的第一个字符。

    char *s="hello.Everyone";

    char *s;

    s="hello,everyone"//hello,everyone的地址赋值给s

    程序段1:

    char *p,*q;

    p="hello,world";

    q=p+6;

    程序段2:

    char a[20]="hello,everyone";

    char *q;

    q=p+11;//q指向字符串one

    注意:上面都是把字符串地址(第一个字符的地址)赋值到指针变量中,而不是整个字符串。

    (3)字符串的引用

    字符串一般存放在字符数组中或用指针指向一个字符串,可以用字符数组名或者指针引用字符串

    %s输出的是字符串,%c输出的是字符

    blog.chinaunix.net/uid-22889411-id-59688.html

    C语言数组与指针详解 - mr_raptor的专栏 - 博客频道 - CSDN.NET

    相关文章

      网友评论

          本文标题:c语言指针

          本文链接:https://www.haomeiwen.com/subject/axznrttx.html