C基础
文章平均质量分 67
主要是C语言的一些基础语法
张痕
这个作者很懒,什么都没留下…
展开
-
C语言13 指针与数组2=数组名的本质+数组名作首地址+数组做函数参数+sizeof指针
一、数组名的本质(1)数组名指代一种数据结构,这种数据结构就是数组;例如:char str[10];cout << sizeof(str) << endl;输出结果为10,str指代数据结构char[10]。(2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;char str[10];str++; //编译出错,提示str不是左值 (3)数组名作为函数形参时,沦为普通指针。Windows NT .原创 2021-08-07 21:15:05 · 470 阅读 · 0 评论 -
C语言12 指针基本操作2+指针与数组
===================数组和指针的基本关系: 数组大小和起始地址指针1、C语言只有一维数组,而且其大小必须在编译期间确定下来。 但是其组元素可以是任何类型,如另外的数组。因此可以构建多维数组。2、对一个数组,只可确定其大小,以及获得指向组下标为0的元素的指针。 其他的关于数组的操作,如组下标等,也是经由指针进行的,二者是等价的。3、int calender[12][31]; sizeof(calender) = 12*31*4; 除了sizeof...原创 2021-08-06 16:03:36 · 283 阅读 · 0 评论 -
C语言11 内存指针操作+函数指针+typedef
///////////////////////////////////////////指针访问内存1、内存地址理解{ unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000;}请问p1+5=? ;p2+5=? ;答:p1+5=0x801005;p2+5=0x810014;在32位系统中,字...原创 2021-08-05 16:43:03 · 932 阅读 · 0 评论 -
C语言10 指针基本操作+引用+指针分配内存GetMemory
1、一个32位的机器,该机器的指针是多少位?可以访问多大的地址空间?答:32bit 2^32 = 4G 地址总线宽度决定了CPU可以访问的物理地址空间.简单地说就是CPU能够使用多大容量的内存.对于386以上的微机系统.地址线的宽度为32位.最多可以直接访问4096MB (4GB)的物理空间。指针即是地址值,地址的编号。指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。8位处理器、16位处理器、32位处理器和64位处理器,...原创 2021-08-05 16:33:51 · 286 阅读 · 0 评论 -
C语言08 flash存储分配+程序运行内存分配
一、从stm32引入理解1、MDK编译log:Program Size: Code=72072 RO-data=6864 RW-data=1316 ZI-data=8684Code是存储程序代码的;(删掉代码中未使用的函数等以节省flash空间)RO-data 是存储const常量和已初始化的字符串等;(类比于文字常量区)RW-data 是存储可读写的初始化值不为0的全局变量和静态变量;(类比于其他平台的data段,数据保持在bin文件中)ZI-data是存储未初始化或...原创 2021-08-04 11:14:12 · 1829 阅读 · 0 评论 -
C语言09 static使用+全局变量和静态变量
1、关键字static有什么用途?1)设置变量的存储域2)限制变量的作用域3)限制函数的作用域1】静态局部变量:在函数体内,被声明为静态的变量在函数被调用过程中维持其值不变,其值在下次调用时仍维持上次的值。(不被释放,而且只要赋一次初始值,如果没有赋值的话会自动为0.) (存储方式-生存期的改变)2】静态全局变量:被声明为静态的全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问。(限制作用域)3】静态函数:被声明为静态的函数只可被这一模块内的其它函数调用。(限制作用域)原创 2021-08-03 22:42:08 · 1133 阅读 · 0 评论 -
C语言07 预编译+define
一、理论1、什么是预编译,何时需要预编译?答: 预编译又叫预处理,指程序编译前的代码文本处理工作。主要指用#表示的预编译指令,有三种:编译器编译前拷贝#include包含的代码,#define宏定义的替换,条件编译等等。何时需要预编译?1)总是使用不经常改动的大型代码体。2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。2、为什么标准头文件都有类似以下的结构?#ifndef __INCvx原创 2021-08-02 17:41:30 · 689 阅读 · 0 评论 -
C语言06 const详解+const 和define的区别
1、C语言的关键字const的含义和用途。含义:const是只读的意思,被const修饰的东西都受到强制保护,只允许访问不允许被改变,可以预防意外的变动,能提高程序的健壮性。通过给编译器特定的附加信息,可以使编译器保护那些不希望被改变的参数,防止其被无意的代码修改。用途:(1)可以定义 const 常量。(2)可以修饰指针。(3)可以修饰函数的参数、返回值,甚至函数的定义体。2、const 用法:限定变量和指针(1)const int a;(2)int const .原创 2021-08-01 20:13:13 · 256 阅读 · 1 评论 -
C语言05 联合体和大小端
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。=== === ====== === ====== === ===1、请写一个C函数,若处理器是Big_endian的,则返...原创 2021-07-25 22:28:15 · 265 阅读 · 0 评论 -
C语言04 volatile的使用
1、关键字volatile的含意? 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。 优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。举例如下:1)并行设备的硬件寄存器(如:状态寄存器)。2).一个中断服务子程序中会访问到的非自动变量(可能被突然调用)。3).多线程应用中被几个任务共享的变量(使用互斥锁)。2、一个变量可以既是const还可以是volatile吗?...原创 2021-07-25 10:26:41 · 90 阅读 · 0 评论 -
C语言03 位操作
1、置位和清零 嵌入式系统总是要对变量或寄存器进行位操作。给一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。#define BIT3 (0x1<<3)static int a;void set_bit3(void){ a |= BIT3;}void clear_bit3(void){ a &= ~BIT3;}2、移位和取值有一个16位的整数,...原创 2021-07-24 18:01:17 · 715 阅读 · 0 评论 -
C语言02 自加自减 i++
1、自增运算符的右结合性。2、请写出下列代码的输出内容 #include <stdio.h>int main(void) { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 10,12,1203、PC上VS运行结果:int j=1;cout<..原创 2021-07-23 23:05:12 · 198 阅读 · 0 评论 -
C语言01 编程疑难
1、限定整数b在整数a和整数c之间:if(a<b<c)错;应该是 if((a<b) && (b<c))@a<b<c在c语言中的解释是,a<b先会返回一个值,如果a<b为真则返回1,为假返回0,然后再进行1<c或0<c的运算。2、结构体定义技巧32位MCU,地址总线和数据总线都是32位,以32位为单位存储。...原创 2019-04-19 23:00:49 · 179 阅读 · 0 评论