C语言:指针易错

#include <stdio.h>
main()
{
    char a[]="hellofg",*p=a;
    printf("%c\n",*p+5) ;//*p得到指针指的字符,+5是字符ASCII码加5 ,结果为m 
    printf("%c\n",*(p+5)) ;//h:p+0  e:p+1....f:p+5
    getchar();
}

 

#include <stdio.h>
main()
{
        int a=10;
        printf("%d\n",&a) ;
        int *p;
        //*p=10;//指针变量没有赋值,直接将常数赋值给这个指针变量是不允许的,因为 指针变量并没有地址,并没有值 
        p=&a;
        printf("%d\n",*p);
    getchar();
}

 

#include <stdio.h>
main()
{
int i,j=2,*p=&i;
*p=*&j;//&j得到j的地址,*地址:取地址中的值
//将得到的值赋值给变量i的指针即:i=j; 
printf("%d %d",i,j);
    getchar();
}

 

#include <stdio.h>
main()
{
    int a[]={2,3,7,8,9,12,16};
    int y=0,x,*p;
    p=&a[0];
    for(x=0;x<7;x++)
    {
        if(*(p++)%2)
        {
            printf("%3d",*p);
            continue;
        }
        y+=*(p+x);
        printf("\n%d\n",y);

    }
    printf("%3d\n",y);
    


    getchar();
 }

 

1.int a[]={1,2,3};
   int *p; 声明整型指针变量
   p=a;将数组首地址赋值给指针变量
   *p:取当前指针所 指的 下标变量的值
2. c语言中%*1d表示忽略第1个整数
   %*3d表示忽略连续3个整数

 

#include <stdio.h>
#include <stdlib.h>
main()
{
    int m=7,n=8,*p=&m,*q=&n,*r;
    r=p;p=q;q=r;
    printf("%d %d %d %d",m,n,*p,*q);
    getchar();
 }

 

posted @ 2023-03-21 09:33  myrj  阅读(44)  评论(0编辑  收藏  举报