C语言基础补充2

1. C语言中常量一般使用大写字母表示,如:
#define NAME Murphy


2.  用const修饰的标识符是只读变量不是常量,且仅在声明时做第一次初始化。
3.  隐式类型转换
    int →long  → unsigned long   longlong   unsigned long long   float   double  longdouble
记住:隐式转换都是“小”类型向“大”类型转换的。
4.  强制类型转换
语法格式: (数据类型)表达式
注:
    隐式类型转换都是低精度数据类型向高精度类型转换的,因此不会产生丢失信息的危险,相反,强制类型转换一般是要把高精度类型转换成低精度类型,存在丢失数据信息的危险。
    无符号型比有符号型占用存储空间要大,因此在类型转换中它们之间的转换方向是:有符号类型向无符号类型转换。
5.为了让程序在不同位数的系统(如32位和64位)之间有较好的移植,可以使用“inttypes.h”头文件中的数据类型,如:
    int16_t表示一个16位的有符号整数类型,uint32_t表示一个32位无符号整数类型。
6. 系统默认为整型,在定义较大的数时要加L将其转为长整型,如:
   #defineYEAR 31536000L


7. 最高优先级:[];();.;->;后++;后--
8.  自动数组

自动数组指未完全初始化的数组。如:

      int a[5];// 完全没初始化,不是自动数组
      int a[5] = {};// 未完全初始化,是自动数组
      int a[5] = {1};// 未完全初始化,是自动数组
      int a[] = {1,2,3};// 完全初始化,不是自动数组


   根据C99标准,对于自动数组中未初始化的元素,其具体的值与其存储类型相关,具体来说是,如果是该数组是静态数组(或全局变量等存放于堆中的变量),则其余元素将被初始化为0,如果是局部数组,则其余元素的值将取决于当其时系统的栈空间数据。

9.字符指针也是字符串,即:

char*p 等价于 char p[]

故下面的程序成立:

    char *p ="hello";


10. 

char a[10] = “abcd”// abcd 存在数组(程序堆栈)内的,而
  char *p = "abcd";// abcd 存在代码段(.text)中,是只读的,所以p叫做字符串常量。改变p的值是非法的,即:*p= "e"是错误的。

11.指针数组等价于二重指针,即:

char*P[3] <==> char **p

故下面的程序成立:

 char *ps[3];
    char **p =ps;


12.数组指针等价于二维数组,即:

char(*P)[3] <==> char p[][]

13.const 修饰符(read-only)

const修饰的变量只能做右值。

const修饰指针:const向右看,最靠近谁谁只读。

    const char *p;//指针变量p本身可变,但p指向的内容是只读的
    char const *p;//同上
    char * const p;//p是只读的,但p指向的内容可变
    const char * const p;//p及p指向的内容均为只读



date:2013-01-21~2013-01-23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值