嵌入式之易忘知识点(未完待续)

本文详细介绍了C++中的const指针用法,包括只读限制及指针本身的可变性。同时,讨论了strlen和sizeof函数的区别,前者计算字符串长度,后者获取内存大小。extern关键字用于扩展全局变量和函数的作用域,而static则用于限制变量和函数的作用域,静态全局变量仅在当前模块可见。此外,文章还阐述了预编译头文件的使用场景以及动态分配数组和字符串操作的基本规则。最后,提到了预编译、动态数组初始化及指针接收数组的相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const指针

const -- 常量化,限制为只读
1、const int *p;  -- 限制 *p 只读,不能通过间接访问去改变原来变量的值,可以修改p的指向
   int const *p;

2、int * const p; -- 限制 p 只读,不能再改变p的指向,但是可以改变变量的值

3、const int *const p; -- 限制 *p p 只读,不能通过间接访问去改变原来变量的值,也不能再改变p的指向
    int const * const p;

strlen和sizeof

strlen -- 计算给定的字符串的长度,不包括'\0'

strlen(给定的字符串);

返回给定的字符串的长度

 sizeof求整个空间的大小,得到的是整个一维数组的空间大小

extern:

 extern -- 引用、声明全局变量、函数等

(1)可以在一个文件中去扩展全局变量的作用

(2)将全局变量的作用域扩展到其他文件

(3)修饰函数,此函数就成为了外部函数,可供其他文件调用

 static -- 静态类型

(1)修饰局部变量,延长局部变量的生命周期(有的系统可以延长到程序结束)

(2)修饰全局变量,将这个全局变量作用域限制在本文中

(3)修饰函数,将这个函数的作用域限制在本文中

static的全局变量,表明这个变量仅在本模块中有意义,不会影响其他模块。
他们都放在静态数据区,但是编译器对他们的命名是不同的。如果要使变量在其他模块也有意义的话,需要使用extern关键字

static全局变量与普通的全局变量有什么区别?
static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别?
static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别?
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝.

=================================================

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
=================================================

 什么是预编译,何时需要预编译:
①总是使用不经常改动的大型代码体;
②程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项;在这种情况下,可以将所有包含文件预编译为一个预编译头。

不能在程序运行的时候,随意更改数组的大小,不过可以用malloc开辟通用数组

不能不告诉计算机数组的大小 

例如:

int  a[];

int  b=0;        scanf("%d",&b);        int  a[b]={0};

给数组元素赋值只能一个一个的赋值,可以用for循环遍历赋值

一维数组用普通一级指针接收,二维数组用行指针接收

 字符串:多个字符连接在一起,用双引号括起来,结尾有'\0'

字符数组:char  a[10]={ 'a','b','c'... };     //结尾没有'\0',是多少个数组成员便有多少个数组成员

gets()函数存一个字符串到 a 数组里面,会自动在末尾加上'\0',puts()一样

对于字符串来说,如果在定义数组时,没有初始化,在最后赋值时一定要加上'\0',否则会出现乱码

 scanf("%d",&n);
int a[n]={0};        典型错误

不允许初始化可变数组
宏定义在预处理进编译成常量了

 & | ^

http://t.csdn.cn/HZlXT

<< >>

http://t.csdn.cn/XrIDG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值