1 大段程序注释的方法

#if 0
#endif

2三字母词
以两个问号 开始的都要注意

3 字面值(常量)
在整型号字面值后加 字符L (long),U(unsigned)说明字符常量 为长整型 或(和)有无符号
0开头为 8进制
0x开头为 16进制
字符常量始终为int类型,不能加后缀
字符常量用单引号,包括 单引号包围的单字符,转义字符,三字母词
多字节字符常量前面加 L,为宽字符常量
宽字节就是用2个字节来表示一个汉字或字符
wchar_t wch[] = L"abc";  // wch就是一个宽字节的数组,L"abc",就是宽字节常量,由于 "abc",不是宽字节的,加L在前面就令它成为宽字节常量,你可以看看L其实是一个宏来的


4typedf
char *ptr//ptr为指向字符的指针

typedf char *ptr;
ptr a;//a为指向字符的指针


5 const

int const a 和const int a 是一样的
int const *p;//指向整型常量的指针,指针可变,指针指向的值不可变
int *const p;//指向整型的指针常量,指针不可变,指向的值是可变的


怎样分析:
int const 均为类型转化运算符 *为指针运算符,优先级相同,结合方向自右向左
int const *p;//指向整型常量的指针,指针可变,指针指向的值不可变
p为指针 
*p指针指向的值
const *p 指针指向的值为 const
int const *p 这个常量为整型

连起就是:指向整型常量的指针

int *const p;//指向整型的指针常量,指针不可变,指向的值是可变的
p为指针
const p 指针为常量
*const p 指针指向的值
int  *const p 指针指向的值为整型

连起来就是:指向整型的指针常量

6作用域
文件作用域,函数作用域,代码块作用域,原型作用域。
代码块作用域:
代码块 :{}之间的所有语句
内层代码块 有一个标识符与外层代码块同名时,内层无法访问到外层代码块的那个标识符。

7链接属性(链接阶段)
external(外部)
internal(内部)
none (无)
关键字 extern static 用于更改标识符的链接属性

8 存储类型 (关系到内存何时分配)
静态:静态内存 内存在程序运行前分配,直到运行完
动态:堆栈 在函数运行时分配,运行完收回
寄存器 register (为动态变量)
关键字 static auto register
函数的形参不能声明为静态

static 在代码块外或函数声明 用于更改标识符的链接属性
static 在代码块内的变量定义 用于更改存储类型

int a=5;//代码块外 链接属性为 external, 存储属性:静态,作用域:整个文件作用域
extern int b;//extern 可不用,链接属性为 external, 存储属性:静态,作用域:整个文件作用域
static int c;,链接属性为internal , 存储属性:静态,作用域:整个文件作用域
//a b c 的存储类型均为静态,在执行之前时分配内存,直到程序结束
//a b 链接属性为 external,可以在链接阶段被其他文件链接

int d(int e1,int e2)//e1 e2 原型作用域,即 e1 和e2 不能相同
{
    int f=1;//代码块内 链接属性为无, 存储属性:动态,作用域:整个函数作用域
    register int b; //代码块内 链接属性为无, 存储属性:register,作用域:整个函数作用域
    static int g=20; //代码块内 链接属性为无, 存储属性:静态,作用域:整个函数作用域
    g++;f++;
    //g 为静态存储,每次调用时不重新初始化;f为动态存储,每次调用后都要初始化
    //如果调用两次 第一次 g=20 g++运行完后 g=21;第二次g=21 g++ 运行完后 g=22
    //如果调用两次 第一次 f=1 f++运行完后 f=2;第二次f=1 f++ 运行完后 f=2
    extern int a; //代码块内 链接属性为 external, 存储属性:动态,作用域:整个函数作用域
    extern int c;//代码块内 链接属性为 external, 存储属性:动态,作用域:整个函数作用域,会将外部的c屏蔽,不影响c的类型,函数运行完后c的属性不变
    ....
    {
        int e1;
        extern int h;
    }
    ....
    {
        int x;
        int e1;
    }
}




C函数及指针学习1的更多相关文章

  1. c 函数及指针学习 10

    标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表std ...

  2. c 函数及指针学习 9

    指针的高级应用 处理命令行参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h>   int main(int ar ...

  3. c 函数及指针学习 7

    1.结构的存储分配 1 2 printf("%d \n",sizeof(char)); printf("%d \n",sizeof(int)); int 类型为 ...

  4. c 函数及指针学习 5

    聚合数据类型 能够同时存储超过一个的单独数据. c语言提供了数组和结构体. 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> # ...

  5. c 函数及指针学习 4

    1数组和指针声明的差别 声明数组:为数组分配内存,为数组名分配内存(指针常量 4个字节) 指针:为指针分配内存(指针变量 4个字节) 1 2 3 4 5 6 7 8 9 10 #include < ...

  6. c 函数及指针学习 3

    strlen(x) 返回 size_t 类型,size_t是 unsigned int 类型,所以 strlen(x)-strlen(y) 返回 unsigned int 始终 >=0 1 2 ...

  7. C函数及指针学习2

    1.break  永久终止循环,continue 结束当前循环 2.switch 每个case标签要有唯一值,(且为常量或常量表达式) 不加break 时执行流会贯穿整个case 标签 3 赋值操作符 ...

  8. c 函数及指针学习 8

    联合体 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h>   union sa     {     double a;     int b; ...

  9. c 函数及指针学习 6

    不完整声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* 方法一   */ struct tag_a{ ...

随机推荐

  1. (DFS)hdoj1312-Red and Black

    题目链接 非常简单的DFS,初学DFS做这道题很合适.需要注意的是题目中输入的行和列顺序是颠倒的. #include<cstdio> #include<cstring> usi ...

  2. Spring框架及IOC容器

    Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码, Spring提倡”最少 ...

  3. ajax异步文件上传,iframe方式

    不是我写的,我看了他的,思路很明确: 实现思路: 在js脚本中动态创建form,动态创建form中的内容,将文件上传的内容以隐藏域的方式提交过去,然后写好回调等. 感觉思路不难,但是我写不出来,感觉需 ...

  4. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  5. Snagit 12 – 功能强的老牌截图软件

    老牌截图软件 Snagit 12 新版正式发布,相比旧版,Snagit 12 界面变得更加简洁,深色的配色增加了专业感,也更加舒服. 在功能上,Snagit 大幅简化了用户体验,不需要复杂的操作,只需 ...

  6. Android-LogCat日志工具(一)

    LogCat : Android中一个命令行工具,可以用于得到程序的log信息. 就像你知道一个人的日志.航程,你可以无时无刻知道一个人在干什么. 而LogCat , 就是程序的日志.通过日志,你可以 ...

  7. [转] linux中巧用ctrl-z后台运行程序

    背景: 最近在执行一些长时间程序的时候,老是一不小心忘了输入‘&’ , 结果终端就卡在那里了,很是郁闷 以前总是再新开一个终端. 今天翻看<鸟哥的linux私房菜>的时候,发现介绍 ...

  8. linux常用命令6:关机重启命令

    关机重启命令 1.shutdown命令 shutdown [选项] 时间 选项: -c 取消前一个关机命令 -h 关机 -r 重启 2.其他关机命令 halt poweroff init  0 3.其 ...

  9. 10、SQL基础整理(约束2)

    约束 除主键约束.外键约束外 唯一约束(主键列.索引列的候选索引)   设计---右键---索引/键---需要修改的列----是唯一的----忽略重复键 代码方式: cid  varchar (20) ...

  10. asp.net ToString()格式汇总

    C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString ...