理解指针在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 ;
}
