因为学习视频解码。不得不重新复习下C语言呢,3年都没碰了嘿嘿!
1、c与java不同它没有boolean和byte这2个基本类型,boolean在c中利用0和非0来代替,0为false,非0为true。byte为一个字节,在c中可以用char类型来代替。
C中各种基本类型所占的字节数:(利用sizeof得到的)
char 占1个字节 (java中2个字节)
short 短整型 2个字节
int 4个字节
long 占4个字节
double占8个字节
2、 c语言的输出占位符:
%d - int
%ld - long
%c - char
%f - float
%hd - short
%lf - double
%x - 16进制输出int或long、short
%o - 八进制输出
s% - 字符串输出
3 指针也是一种数据类型,指针是指向对象的在内存中的地址:&i代表的是i的地址(给指针赋值时用到),p的值就是i在内存中的地址,*p则是地址中的值,可以用数组的指针变量来访问数组:如下面程序运行:
int i = 10; int *p = &i; char a[3] = { ‘a‘, ‘b‘, ‘c‘ }; printf("i:%d \n", i); printf("p:%d\n" , p); printf("*p:%d \n", *p); printf("&i:%d \n", &i); printf("*(p+1):%d \n", *(p+1)); printf("*a:%c \n", *a); printf("*(a+1):%c \n", *(a + 1));
输出的结果为:
4 指针的指针,即多级指针。就是指针是个变量,它也有地址,指向指针变量的地址即为地址的地址,即二级指针变量。如下:
int i = 10; int *p = &i; int **c = &p; printf("%d\n",c); //c指针变量是地址的地址 printf("%d\n", *c); // *c为c指针变量地址里的值 printf("%d\n", **c);// *cc 是以c指针变量指向的地址的值为地址的值
5 通过指针来修改变量值:
int i = 10; int *p = &i; int **c = &p; **c = 4; printf("%d\n",i); //c指针变量是地址的地址
执行后i的值为4
原文:http://www.cnblogs.com/bokeofzp/p/5985367.html