格式控制符
完整格式
1.% - x m . n 格式字符
2.有-表示左对齐,无表示右对齐
3.x表示空位需要填的字符
4.m表示最小域宽
5.n表示精度,一般用于实型小数点保留位数,按照四舍五入原则
格式字符
整型
%d格式,表示整型
%hd格式,表示短整型
%ld格式,表示长整型
%lld/l64d格式,表示64位整型
%u格式,表示无符号整型,其他长度同d格式
%o格式,表示无符号八进制整型,对于负数直接将补码看成正数转换
%x格式,表示无符号十六进制整型,x小写对应的十六进制为小写,x大写对应大写
实型
%f格式,表示小数形式单精度实型
%lf格式,表示小数形式双精度实型
%e格式,表示指数形式单精度实型;le同理
%g格式,系统自动选定f或e格式,使输出的宽度最小,且不输出无意义的0
PS:G/E格式表示的指数形式中E大写
字符型
%c格式,表示单个字符
%s格式,表示字符串
其他
%p格式,表示指针
%i格式,据说是以前的整型格式字符
%%格式,输出%
转义字符
\a:蜂鸣,响铃
\b:回退:向后退一格
\f:换页
\n:换行,光标到下行行首
\r:回车,光标到本行行首
\t:水平制表
\v:垂直制表
\\:反斜杠
\':单引号
\":双引号
\ddd:三位八进制
\xhh:二位十六进制
\0:空字符(NULL)
#include <stdio.h>
void test0()
{
char c;
char *pc;
/*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
printf("&c =%p\n",&c);
printf("&pc =%p\n",&pc);
/*第二步:所有变量都可以保存某些值,接着赋值并打印*/
c = 'A';
pc = &c;
printf("c =%c\n",c);
printf("pc =%p\n",pc);
/*第三步:使用指针:1)取值 2)移动指针*/
printf("*pc =%c\n",*pc);
pc=pc+1;
printf("*pc =%c\n",*pc);
printf("//=================\n");
}
void test1()
{
char *pc;
int ia;
int *pi;
/*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
printf("&ia =%p\n",&ia);
printf("&pi =%p\n",&pi);
printf("&pc =%p\n",&pc);
/*第二步:所有变量都可以保存某些值,接着赋值并打印*/
ia = 0x12345678;
pi = &ia;
pc = (char *)&ia;
printf("ia =0x%x\n",ia);
printf("pi =%p\n",pi);
printf("pc =%p\n",pc);
/*第三步:使用指针:1)取值 2)移动指针*/
printf("*pi =0x%x\n",*pi);
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc);
printf("//=================\n");
}
void test2()
{
char ca[3]={'A','B','C'};
char *pc;
/*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
printf("ca =%p\n",ca);
printf("&pc =%p\n",&pc);
/*第二步:所有变量都可以保存某些值,接着赋值并打印*/
//前面已经有ca[3]={'A','B','C'};
pc = ca;
printf("pc =%p\n",pc);
/*第三步:使用指针:1)取值 2)移动指针*/
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc);
printf("//=================\n");
}
void test3()
{
int ia[3]={0x12345678,0x87654321,0x13572468};
int *pi;
/*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
printf("ia =%p\n",ia);
printf("&pi =%p\n",&pi);
/*第二步:所有变量都可以保存某些值,接着赋值并打印*/
//前面已经有ia[3]={0x12345678,0x87654321,0x13572468};
pi = ia;
printf("pi =%p\n",pi);
/*第三步:使用指针:1)取值 2)移动指针*/
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi); pi=pi+1;
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi); pi=pi+1;
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi);
printf("//=================\n");
}
void test4()
{
char *pc="abc";
/*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
printf("&pc =%p\n",&pc);
/*第二步:所有变量都可以保存某些值,接着赋值并打印*/
//前面已经有pc="abc";
/*第三步:使用指针:1)取值 2)移动指针*/
printf("pc =%p\n", pc);
printf("*pc =%c\n",*pc);
printf("pc str=%s\n", pc);
}
int main(int argc,char **argv)
{
printf("sizeof(char )=%d\n",sizeof(char ));
printf("sizeof(int )=%d\n",sizeof(int ));
printf("sizeof(char *)=%d\n",sizeof(char *));
printf("sizeof(char **)=%d\n",sizeof(char **));
printf("//=================\n");
//test0();
//test1();
test2();
//test3();
//test4();
return 0;
}