自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 中级嵌入式(专业英语)

1.A realreal-time’s task;lessinterruptvoiceinterfacehardwarepre-specifiedvectorControllerfraudulentlookingvictimizedbookmark).7.。9.13.Deadlock。

2024-05-21 14:46:05 1245 1

原创 C语言函数指针使用案例(回调函数)

/通过函数指针调用函数,也就是回调。修改compare中的返回值,相当于改变了排名机制(从大到小,从小到大)排序函数可以根据排名机制来灵活变化,可以为每种排名机制创建一个回调函数。一个函数的引用传给另外一个函数的时候,那个函数被称为回调函数。return A-B;//改变返回,则可改变顺序。A在这里就是一个回调函数,函数B可以通过函数指针来回调它。

2023-06-03 11:24:48 201

原创 C语言函数指针

机器语言中的函数调用基本上就是一条跳转指令,跳转到函数的入口点,跳转到函数的第一条指令,当我们说函数指针存放函数地址的时候,是在说函数指针存放了函数在内存中起始地址或者说入口点。

2023-06-03 00:17:40 42

原创 C语言函数返回指针

调用完ADD函数后,内存会被释放,大于130的这块栈空间可以被其他函数使用,尽管ptr存储了地址144,指向了这块内存,但是它的值是不确定的,因为这块内存已经被释放了。因此从栈底向上传一个局部变量或者一个局部变量地址是可以的,但是从栈顶向下传一个局部变量或者一个局部变量的地址是不可以的。如果我们在堆上有一个内存地址或者在全局区有一个变量,那么我们可以安全的返回它们的地址。一个指针存储了另外一个数据的地址,因此函数返回一个指针也是完全允许的。所有的局部变量和函数调用信息都放在栈区。

2023-06-02 23:44:47 332

原创 C语言指针和动态内存

如果请求的新快大于之前的块,如果可以拓展之前的块,如果能够在之前块的基础上找到连续的内存,那么拓展就之前的块,否则就分配新的内存,把之前块的内容拷贝过去,然后释放之前的内存。我们申请了动态内存,使用完了之后也不去释放它,看起来我们的应用程序只是占据了一些未使用的内存,它只会由不正确的动态内存(堆)的使用引起。内存泄漏:总是因为堆中未使用和未引用的内存块才发生的(堆上的内存不会自动释放需要free)栈上的内存是自动回收的,栈上的大小是固定的,最多就是栈溢出。C语言中支持动态内存分配的各种库函数。

2023-06-02 23:10:20 35

原创 C语言指针和动态内存

不像栈,应用程序的堆不是固定的,也没有特定的规则来分配和销毁相应的内存,程序员可以完全控制在堆上分配多少内存,数据保留到什么时候,你几乎可以任意使用堆上的内存,只要不超出系统自身的内存限制,有时候随意使用堆也是危险的,因此也是危险的。有时候我们把堆称为内存的空闲池或者内存空闲存取区,我们可以从堆获得我们想要的内存。之前申请的内存依然还在堆上,还消耗着堆内存,它不会被自动回收,如果我们使用了malloc函数,用完之后我们就要释放它,否则就会浪费内存(内存泄漏)。当产生无穷递归时,会导致栈溢出。

2023-06-02 00:27:53 21

原创 C语言指针和数组

B[i][j]==*(B[i]+j)==*(*(B+i)+j) //B[i]返回的是一个整型指针,B+i返回的是一个一维数组的指针。print B //400,返回一个指向一维数组的指针。print *B //400,返回一个指向整型的指针。

2023-06-01 23:46:52 21

原创 C语言指针和字符数组(下)

/编译期间会把它们分配在常量区,最有可能会被放在应用程序的代码区,结果是它不能被修改,c[0]='A'就会报错。//有时候我们想要这样一个函数,仅允许读,但是不允许写。我们可以把函数的参数修改为const。//字符串会存在分配给这个数组的内存空间中,这种情形下它会被分配在栈上。

2023-05-31 17:14:58 28 1

原创 C语言指针和字符数组(上)

/不仅仅是printf函数,还有很多string.h里面的函数。//数组在内存中连续存储的,可以这样表示c[i]=*(c+i),但不能c++c[4]='\0';//当有null时,字符串数组才正常输出。//数组和指针有时候用起来很相似,但是它们并不是一个类型。//所以这些函数都假定字符串是以NULL结尾的。//传的是数组的基地址,而不是整个数组的拷贝。

2023-05-31 16:37:37 33 1

原创 C语言数组作为函数参数

/所以这里的sizeof(A)为4。//实际上编译器做的是仅仅创建一个同名的指针(而不是创建整个数组)//我们可以在被调函数中修改元素,这种修改被反映到主调函数中。//当编译器看到数组作为函数参数的时候,它不会拷贝整个数组。//如果是一个数组,我们不能像指针那样对它进行增加或减少。//比如我们可以使用数组的名字来取得首元素得指针。//所以数组采用的是传引用。

2023-05-31 16:07:43 50 1

原创 C语言指针和数组

int main()/*int *p=A;A++;//非法p++ //合法*/return 0;

2023-05-31 00:26:22 27 1

原创 C语言函数传值vs传引用

2. 内存堆区: 存放new或者malloc出来的对象;内存分为四个部分:栈、堆、全局/静态存储区、常量存储区。3. 常数区: 存放局部变量或者全局变量的值;4. 静态区: 用于存放全局变量或者静态变量;1. 内存栈区: 存放局部变量名;5. 代码区:二进制代码。

2023-05-31 00:11:06 29 1

原创 C语言指向指针的指针

int main()int x=5;int* p=&x;*p=6;int** q=&p;***r=10;**q=*p+2;return 0;

2023-05-29 11:25:10 19

原创 C语言指针类型,算术运算

int main()int a=1025;int *p;p=&a;char *p0;return 0;

2023-05-29 11:10:40 27 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除