理解指针在printf()中的简单应用

很多人初学者弄不清*p,*p+1,*p++等,打印输出这些所对应的值是多少,可以看下面的代码自己去敲一敲代码理解:

#include<stdio.h>
int main()
{
          
   
 
   int x[6] = {
          
   2,4,6,8,5,7} , *p = x , i ;
  
   // printf( "%p
" , p ) ;        // 假如地址为:   0x7ffdb99090f0

   // printf( "%p
" , p+1 ) ;      // 地址加1个int: 0x7ffdb99090f4  地址偏移

   // printf( "%2d
" , *p) ;       //输出2 输出第一个数

   // printf( "%2d
" , *p++) ;     //输出2 输出第一个数。 ++的优先级高于*(不是乘号而是*指针变量),所以先p++,再*p++。

   // printf( "%2d
" , *(p++)) ;   //输出2 输出第一个数

   // printf( "%2d
" , (*p)++ ) ;   //输出2 先解引用 再加1,但因为这是后置++,先引用*p打印出来,然后再加1.

   // printf( "%2d
" , *p+1) ;     //输出3

   // printf( "%2d
" , *(p+1)) ;   //输出4

   // printf( "%2d
" , *(++p)) ;   //输出4

   // printf( "%2d
" , *++p) ;     //输出4

   return 0 ;
}
经验分享 程序员 微信小程序 职场和发展