C函数及指针学习1
1 大段程序注释的方法
#if 0
#endif
wchar_t wch[] = L"abc"; // wch就是一个宽字节的数组,L"abc",就是宽字节常量,由于 "abc",不是宽字节的,加L在前面就令它成为宽字节常量,你可以看看L其实是一个宏来的
char *ptr//ptr为指向字符的指针
typedf char *ptr;
ptr a;//a为指向字符的指针
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 指针指向的值为整型
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的更多相关文章
- c 函数及指针学习 10
标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表std ...
- 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 ...
- c 函数及指针学习 7
1.结构的存储分配 1 2 printf("%d \n",sizeof(char)); printf("%d \n",sizeof(int)); int 类型为 ...
- c 函数及指针学习 5
聚合数据类型 能够同时存储超过一个的单独数据. c语言提供了数组和结构体. 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> # ...
- c 函数及指针学习 4
1数组和指针声明的差别 声明数组:为数组分配内存,为数组名分配内存(指针常量 4个字节) 指针:为指针分配内存(指针变量 4个字节) 1 2 3 4 5 6 7 8 9 10 #include < ...
- c 函数及指针学习 3
strlen(x) 返回 size_t 类型,size_t是 unsigned int 类型,所以 strlen(x)-strlen(y) 返回 unsigned int 始终 >=0 1 2 ...
- C函数及指针学习2
1.break 永久终止循环,continue 结束当前循环 2.switch 每个case标签要有唯一值,(且为常量或常量表达式) 不加break 时执行流会贯穿整个case 标签 3 赋值操作符 ...
- c 函数及指针学习 8
联合体 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> union sa { double a; int b; ...
- 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{ ...
随机推荐
- windbg调试C#代码(一)
用windbg调试C#代码是比较麻烦的,因为windbg是针对OS层级的,而C#被CLR隔了一层,很多原生的命令如查看局部变量dv.查看变量类型dt等在CLR的环境中都不能用了.必须使用针对CLR的扩 ...
- 如何利用SVN合并代码
一. 背景 平时在进行开发时,一般都会有多版本同时进行,包括项目版本.周版本.紧急版本等,当某一个版本具备上线条件后,需要在上一个已发布的版本基础上进行发布,才能够避免出现版本相互覆盖,因此 ...
- xcode开发的6个小技巧
Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...
- mysql 导入数据库文件到指定数据库
i:\mysql\bin>mysql -u 用户名 -p 数据库名 < i:/test.sql // (source "c:\adsense.sql" ) ...
- python解无忧公主数学题107.py
python解无忧公主数学题107.py """ python解无忧公主数学题107.py http://mp.weixin.qq.com/s?__biz=MzI5ODE ...
- Oracle Data Integrator 12c (12.1.2)新特性
改进特性如下: 基于流程界面的声明式设计 在12c中,以前的接口(interface)已经改为映射(mapping),新的基于流程声明的设计方式更灵活,也更容易使用.在12c中,映射的实现是通过使用J ...
- 知道创宇研发技能表v3.0
知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关 ...
- HD OJ2023
#include "stdio.h"double stu[60],cla[10];int a[60][60];int main(){ int n,m,i,number,j; whi ...
- 转载一篇文章 python程序员经常犯的10个错误
一位同事推荐的.翻译的不错. http://www.oschina.net/translate/top-10-mistakes-that-python-programmers-make
- Linux/Unix 桌面趣事:文字模式下的 ASCII 艺术与注释绘画
boxes 命令不仅是一个文本过滤器,同时是一个很少人知道的有趣工具,它可以在输入的文本或者代码周围框上各种ASCII 艺术画.你可以用它快速创建邮件签名,或者在各种编程语言中留下评论块.这个命令可以 ...