-
函数返回一个绳子:函数返回指针
指针变量其实和普通变量没有什么区别,一个函数也是可以正常返回一个指针的。
char * func() { char * p = nullptr; return p; }
int main(int argc,char **argv) { return 0; }
但是我们需要思考的是,什么情况下我们要返回一个指针,返回指针的时候需要我们注意些什么?通常情况下,我们是希望为函数外提供一片内存,例如,我们可以给函数外面提供一个数组。int * func() { int arr[] = {1, 2, 3, 4}; return arr; }
但是这样写得话,程序会崩溃掉。原因是,arr 数组是一个局部变量,在 func 结束之后,其内存就被销毁掉了。此时在函数外面对其进行操作,自然会出问题。所以,要完成这类操作,我们需要把内存分配到堆内存上面。int * func() { int * arr = (int *)malloc(4 * sizeof(int)); return arr; }
这样就没有问题了,当然,既然是分配在了堆内存上,就要记得手动销毁。int main(int argc,char **argv) { int * p = func(); free(p); return 0; }
查看全部 -
#include<cstring>
memcpy指的是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。
查看全部 -
指针变量其实和普通变量没有什么区别,一个函数也是可以正常返回一个指针的。
查看全部 -
代码块中定义的变量被称之为局部变量。它们在其他函数的语句中是不可见的,也无法访问它们。
全局变量是在所有函数体的外部定义的,程序的所有部分都可以使用。全局变量不受作用域的影响,其生命周期一直到程序的结束。
查看全部 -
无法确认指向的指针,或者指向一个无效地址的指针,我们把他叫做野指针
查看全部 -
数组名就是一个指针,不过数组名是一个常量指针,不能做累加或者累减操作
查看全部 -
指针的本质(*:解引用、&:取地址)



查看全部 -
我的笔记
查看全部 -
开始学习查看全部
-
负数的二进制表示:正数取反+1
在CPU里进行数字运行,用取反电路来做。比如:3-4的运算,也就是先给4取反,再+3+1
查看全部 -

函数返回值类型+(指针变量名)+(函数传入的参数)=函数名

第25行的代码表示用指针的形式调用函数


dowork()回调函数的用法
查看全部 -
#include <stdio.h>
int myFunc(int, int, int(*callBack)());
int funcA();
int funcB();
int funcC();
int main(int argc, char** argv)
{
myFunc(4, 5, funcA);
myFunc(5, 1, funcB);
return 0;
}
int myFunc(int a, int b, int(*callBack)())
{
int c = a + b;
int d = b + c;
(*callBack)();
return 0;
}
int funcA()
{
printf("funcA\n");
return 0;
}
int funcB()
{
printf("funcB\n");
return 0;
}
查看全部
举报







