C语言指针使用常见问题

发布时间:2024年01月01日

1.*p++:

#include<stdio.h>
int main()
{
    char  s[ ]="159",*p;
    p=s;
    printf("%c",*p++);
    printf("%c",*p++);
    return 0;
}

输出:15

注意点:根据符号的优先级,*p++与*(p++)可以等价

2.指针的初始化:


#include<stdio.h>
int main()
{
 int  *a, b=3;
 *a=b;
 printf("%d",*a) ;
}

该程序实际上无法执行,因为指针未初始化。正确语法应该为

a=&b;

3.指针与其指向的变量之间的关系:

#include<stdio.h>
int main(void)
{
      int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;

      p = x;
      pp = &p;
      printf("%d ", *(p++));  /* 数字后有一个空格 */
      printf("%d\n", **pp);

      return 0;
}

输出:2 4

在输出**pp时,由于pp指向的变量为指针p,由于此时p已经指向数组的第二个元素,所以输出应该为数组的第二个元素。也就是说pp的值是p的地址,故*pp=p,因而**pp=*p=4。

4.指针与数组名之间的关系:

# include <stdio.h> 
int main(void)
{
    int a[10] = {0,1,2,3,4,5,6,7,8,9}, *p = a+3;
        
    printf("%d", p[2]);
        
    return 0;
}

输出:5

数组名本身也是一个指针

文章来源:https://blog.csdn.net/Xm041206/article/details/135327915
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。