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(); }