首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言进阶——指针进阶

    我们在指针初阶中介绍了指针的基本概念:如指针大小、野指针问题、指针间的关系运算等,在我们的指针进阶中,将会对指针进行进一步剖析,见识更深的指针!...图片来源:新浪网 ---- 正文   我们将在指针进阶中学习各种各样指针,比如字符指针、数组指针、函数指针等,这些指针种类虽多,但能力都很强大,作为进阶系列文章,涉及知识多多少少有点难度,但我们相信无论多么大的困难都无法阻挡我们的学习之路...,35} }; int sz_str = sizeof(s) / sizeof(s[0]);//结构体型部分 qsort(arr_c, sz_c, sizeof(arr_c[0]), cmp_c);...arr, sz, sizeof(arr[0]), cmp); //同样的模仿qsort函数传参 print(arr, sz);//打印函数 return 0; } ---- 总结   到这里指针进阶的基本内容已经介绍完了...当然指针进阶还有很多联系等着我们去挑战,我们的目标很简单——征服C指针,然后去实现我们的梦想!

    15211

    C】指针进阶

    指针的进阶 本章重点 字符指针 数组指针 指针数组 数组传参和指针传参 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 指针和数组面试题的解析 指针的主题,我们在初级阶段的《指针》章节已经接触过了...ps指向的是字符串的首字符 //printf("%s\n", *ps);//%s打印的是字符串的内容 //*ps = 'w';//常量字符串不可以修改,这里的写法是错误的 //printf("%c\...const来修饰,防止通过p修改字符串 const char ps = “abcdef”;//这里的ps指向的是字符串的首字符 要想修改字符串中的内容需要用到数组: char arr[]="a b c...C/C++会把常量字符串存储到单独的一个内存区域,当 几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化 不同的数组的时候就会开辟出不同的内存块。...void test(char **p) { } int main() { char c = 'b'; char*pc = &c; char**ppc = &pc; char* arr[10]; test

    19120

    C进阶:预处理

    二.翻译环境 从.c 文件到 .exe 文件需要经过编译器的翻译,而翻译又分为 编译和链接两个部分 编译又分为三个部分: 1.预编译:又叫预处理,在这个部分主要完成头文件的包含,#define的替换...进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,...嵌套文件包含 comm.h和comm.c是公共模块。 test1.h和test1.c使用了公共模块。 test2.h和test2.c使用了公共模块。...test.h和test.c使用了test1模块和test2模块。 这样最终程序中就会出现两份comm.h的内容。这样就造成了文件内容的重复。 如何防止这种问题出现?...C++编程指南》中的两个问题 1.

    14210

    C++】模板进阶

    return 0; } 2.C++的array类对标C语言静态数组 1....C++搞出来非类型模板参数的array类,实际对标的就是C语言的静态数组,array的第二个模板参数就是非类型模板参数N,我们在定义静态数组时,除C语言外的定义方式,还可以用array类来定义一个对象,...C++觉得C语言的检查机制不够严格,使用者在使用时有可能会因为越界访问导致程序出现意料不到的错误,所以C++出来了array类,array无论对于越界读还是越界写,他都可以检查出来,本质是因为他的检查机制是...int main() { //C++11想让我们用array,不想让我们用C语言的数组了,就因为C语言的越界检查不够严格,容易引发问题。...//C语言对于越界读,不检查。

    1K20

    C语言进阶——指针

    C/C++会把常量字符串存储到单独的一个内存区域, 当几个指针,指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...*(*arr)[10] D.char(*)arr[10] 解析: A是二级指针数组,B是指针数组,C是char *数组的指针,D是char *的数组。...只有C是数组指针。 tip:根据优先级看只有C选项优先跟*结合,其他都不是指针,所以直接选C。...( ) A.int (*(*F)(int, int))(int) B.int (*F)(int, int) C.int (*(*F)(int, int)) D....* fun(int *) D.int* (*fun)(int *) 首先C压根就不是函数指针,先排除,然后D返回值不是int,排除,A的参数不是int *,排除,剩下B了。

    11110

    C++【模板进阶

    其他类型不在标准之内 非类型模板参数必须为常量(不可被修改),且需要在编译阶段确定结果 整型家族:char、short、bool、int、long、long long 等 1.3、实际例子:array 在 C+...private: int _t1; char _t2; }; int main() { Test T1(1, 2); Test T2(20, 'c'...(1, 2); return 0; } 声明与定义在同一个文件中时,可以直接找到函数的地址 代码从文本变为可执行程序所需要的步骤: 预处理:头文件展开、宏替换、条件编译、删除注释,生成纯净的C代码...+【模板进阶】的全部内容了,在本文中,我们学习了非类型模板参数,认识了 C++11 中的新容器 array;然后学习了模板的特化,见识了模板特化的各种场景;最后明白了模板声明与定义不能分离的根本原因,总之...,模板很强,但想要用好还得多练 C++ 初阶系列文章到此就正式结束了,后续将会继续更新 C++ 进阶内容,比如 继承、多态、高阶二叉树 等等高能知识点,敬请期待吧 ----

    16410

    C++】模版进阶

    所以我们通常建议进行类模板特化而不建议函数模版特化 三、模版分离编译 一个程序由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程叫做分离编译模式 在之前的学习C语言的过程中...,我们通常在写一个某些功能的模拟实现时,会将声明写在头文件中,定义写在源文件中,声明与定义分离就是一种分离编译 一般C/C++程序运行的步骤为: 预处理–>编译–>汇编–>链接 预处理过程就是对程序进行提前处理...但是模版分离编译会导致模版函数不会进行实例化,导致链接时找不到地址而报错 解决办法就是声明和定义都在一个.h文件当中,这也是最好的一种方式 四、对于模版的总结 优点:模版复用了代码,节省资源,更快的迭代开发,C+

    3610
    领券