前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言常用知识点

C语言常用知识点

作者头像
yifei_
发布2022-11-14 14:17:16
4400
发布2022-11-14 14:17:16
举报
文章被收录于专栏:yifei的专栏

虽说C语言学了好多年了,但是还是很多东西没有真正搞清楚啊。 define|typedef|static|const|数组&指针|多维数组

define宏定义

代码语言:javascript
复制
一般形式为:#define 标识符 字符串
例如:#define PI 3.14
在编译预处理时会将PI进行替换,并且只是简单地字符串替换!
作用域是当前文件。
* 方便程序修改
* 提高程序运行效率
#define A a+b 
...
int a=2,b=3;
int c=A*A; // >>> c=a+b*a+b,此时c=11,而不是25;
printf("%d",c); 
...
所以有时候可以加个括号
#define A (a+b)

typedef

代码语言:javascript
复制
用来给类型起个新名字
一般形式: typedef *** newname;
example: typedef int INT;
		 typedef long long ll;
* 会对***进行编译,把***当做一个整体,然后起一个新名字
代码语言:javascript
复制
#define INT1 int*
typedef int* INT2;
...
INT1 p1,p2; // >>> int *p1,p2; //创建一个指针int型指针p1和int变量p2.
INT2 p3,p4; // >>> int *p3; int*p4; //创建两个int型指针变量
...

还可以用来定义机器无关的类型

代码语言:javascript
复制
你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:
typedef long double REAL;
在不支持 long double 的机器上,该 typedef 看起来会是下面这样:
typedef double REAL;
并且,在连 double 都不支持的机器上,该 typedef 看起来会是这样:
typedef float REAL;

static

修饰局部变量时,称为静态变量。

代码语言:javascript
复制
可以提高局部变量的持久性(改变生存周期),函数调用结束时,该变量并不会释放,第二次调用函数时,值还是之前的。
会在静态数据区创建,初始值为0.

修饰函数,该函数的作用域为当前文件 & 不能修改任何非static对象。

修饰全局变量,限定作用域为当前文件。

const关键字

不是常量,是一个只读变量

不能放在case关键字后面也说明const不是一个常量。

定义时赋值,之后不允许修改。

修饰普通变量

代码语言:javascript
复制
const int a;
a还是一个int型变量,const int 顺序可以互换:
int const a;

修饰数组

代码语言:javascript
复制
const int a[5];
int const a[5];
只读数组

修饰指针

代码语言:javascript
复制
const char *p;
char const *p;//这两种,const都是修饰*p,则p指向的变量只读。(与下一种对照记忆)
char * const p;//const很明显修饰指针p,则指针p不能被修改。
const char * const p;//指针p不能被修改,指向的对象也不能被修改。

还可以用在函数传值,增强程序健壮性

代码语言:javascript
复制
void apple(const char *a){//防止修改a指向的字符串
	...
}
void apple(char * const a){//防止修改a本身
	...
}

数组&指针

代码语言:javascript
复制
char *p="hello";//字符串是一个只读的常量
char a[]="hello";//此时初始化的数组可以修改。

多维数组

C语言不能像一位数组那样,给函数传递一个多维数组。 只能再函数的形参处写明除第一下标之外的其他下标。

代码语言:javascript
复制
int function(int a[]);

int a[10];
function(a);
-----------------------------------
int function(int a[][3][4]);//需写明下标
int a[4][3][4];
function(a);

欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • define宏定义
  • typedef
  • static
  • const关键字
  • 数组&指针
  • 多维数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档