当前位置: 首页 > news >正文

做网站百度还是阿里巴巴好网络安全方案设计步骤

做网站百度还是阿里巴巴好,网络安全方案设计步骤,网站开发毕业设计源码,jsp网站开发工具及语言目录 一、字符指针 二、指针数组#xff1a; 三、数组指针#xff1a; 1、定义#xff1a; 2、数组名和数组名区别#xff1a; 3、数组指针的使用#xff1a; 四、数组参数#xff0c;指针参数#xff1a; 1、一维数组传参#xff1a; 2、二维数组传参 三、数组指针 1、定义 2、数组名和数组名区别 3、数组指针的使用 四、数组参数指针参数 1、一维数组传参 2、二维数组传参 3、一级指针传参 4、二级指针传参 五、函数指针 1、定义 2、函数名和函数名 3、函数指针的调用 六、函数指针数组 七、指向函数指针数组的指针 一、字符指针 定义字符指针就是指向一个字符串的指针。指针类型为char* int main() {char c z;char* pc c;printf(%c\n, c);return 0; }或者 int main() {const char* pc abcdef;printf(%s\n, pc);return 0; } 这里因为是个常量字符串所以可以用const修饰来达到后面不会被修改的问题。 上面const char* pc abcdef这里并不是将abcdef赋给pc的指针变量里面而是将字符串的首字符的地址放在pc中。 接下来看一个经典题目 #include stdio.h int main() {char str1[] hello ppr.;char str2[] hello ppr.;char *str3 hello ppr.;char *str4 hello ppr.;if(str1 str2)printf(str1 and str2 are same\n);elseprintf(str1 and str2 are not same\n);if(str3 str4)printf(str3 and str4 are same\n);elseprintf(str3 and str4 are not same\n);return 0; } 这串代码的意思是: 将hello ppr.给到数组str1和str2中判断二者是否相等。 将hello ppr.的地址给到str3和str4中判断二者是否相等。 那么为什么会出现这样的结果呢 对于str1和str2这两个是开辟了两块不同的空间比较数组名就是比较首元素的地址毕竟空间不同肯定比较出来就会不同。 对于str3和str4 首先要知道这是一个常量字符串是不能够被修改的所以在内存就没有必要存储两份了那么这两个字符指针就都会指向那同一块空间。 二、指针数组 定义存放指针的数组就是指针数组。 int main() {int arr1[5] { 1,2,3,4,5 };int arr2[5] { 2,3,4,5,6 };int arr3[5] { 3,4,5,6,7 };int arr4[5] { 0,0,0,0,0 };int* arr[4] {arr1,arr2,arr3,arr4};for (int i 0; i 4; i){for (int j 0; j 5; j){//printf(%d , arr[i][j]);printf(%d , *(*(arr i) j));}printf(\n);}return 0; } 如上代码所示 arr先和右边的[]结合就是一个数组然后里面每一个元素都是int* 这就是一个存放整形指针的数组。 例如 int* arr1[10]//这是一个整形指针的数组里面有10个元素。 char* arr2[10]//这是一个这是一个字符指针的数组里面有10个元素。 char** arr3[10]这是一个二级字符指针的数组里面有10个元素。 三、数组指针 1、定义 定义这是一个指针是能够指向数组的指针。 写法int* p1[10]       or        int (*p2)[10] 这两种写法是哪一种呢 很显然是后面的因为前一个和指针数组一样。 因为p2和[]结合的优先级高于*所以需要用小括号来改变其结合的优先顺序。 2、数组名和数组名区别 例如 对于int arr[10]; arr和arr分别有啥区别 同样从代码入手 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(arr %p\n, arr);printf((arr1) %p\n, arr 1);printf(arr %p\n, arr);printf((arr 1) %p\n, arr 1);return 0; } 如上图所示如果只看arr和arr的话二者是相等的但是如果对二者都进行指针运算1后arr跳过了增加了4跳过了一个整型而arr增加了28十六进制换算成十进制为40所以就是跳过了10个整型也就是这个数组。 故有结论arr是这个数组的首元素的地址                 arr是这整个数组的地址所以1是跳过这个数组的大小 3、数组指针的使用 数组指针大多时候是在二维数组的传参中使用的在一维数组中的作用不大。 依然从代码入手 void print_arr1(int arr[3][5], int row, int col) {int i 0;for (i 0; i row; i){for (int j 0; j col; j){printf(%d , arr[i][j]);}printf(\n);} } void print_arr2(int(*arr)[5], int row, int col) {int i 0;for (i 0; i row; i){for (int j 0; j col; j){printf(%d , arr[i][j]);}printf(\n);} } int main() {int arr[3][5] { 1,2,3,4,5,6,7,8,9,10 };print_arr1(arr, 3, 5);printf(\n);//数组名arr表示首元素的地址//但是二维数组的首元素是二维数组的第一行//所以这里传递的arr其实相当于第一行的地址是一维数组的地址//可以数组指针来接收print_arr2(arr, 3, 5);return 0; } 如上代码所示 这里用了自己创建的两个打印二维数组的函数在其中唯一不同的是形参的接收不同在print_arr1中用传统的二维数组来接收而在print_arr2中用数组指针指向数组的指针来接收是一样的效果。 拓展int (*parr[10])[5] 这是个啥 首先parr和[10]结合成为一个数组所以parr是个数组在这个数组里面有10个元素 其中每个元素的类型是int(*)[5]这个数组指针 四、数组参数指针参数 1、一维数组传参 #include stdio.h void test(int arr[]) {} void test(int arr[10]) {} void test(int* arr) {} void test2(int* arr[20]) {} void test2(int** arr) {} int main() {int arr[10] { 0 };int* arr2[20] { 0 };test(arr);test2(arr2); } 如上代码中所有传参均是可以的用数组接收或者用指针接收。 2、二维数组传参 3、一级指针传参 当一个函数的参数部分为一个一级指针的时候函数能接收的参数有 void test(int* a) {}int main() {int a 10;int* pa a;int arr[10];test(a);test(pa);test(arr);return 0; } 4、二级指针传参 当一个函数的参数部分为一个二级指针的时候函数能接收的参数有 void test(int** a) {}int main() {int** a ;int* pa ;int* arr[10];test(a);test(pa);test(arr);return 0;} 五、函数指针 1、定义 类比一下 数组指针是指向数组的指针函数指针就是指向函数的指针。 类比于数组指针 那么函数指针该怎么写呢 例如有一个函数int Addint x,int y; 假设我要定义一个函数指针变量名为ppr只想Add函数 那么首先要是一个指针就需要用来进行(*ppr) 然后需要是个函数里面写形参的类型就是(*ppr)(intint) 最后看返回值int (* ppr)(intint) Add;         2、函数名和函数名 函数名和函数名在C语言中大多数情况下都是等效的都表示函数的地址。然而使用可以使代码更加清晰明确。 3、函数指针的调用 int Add(int x, int y) {return x y; }int main() {//int (*pf)(int, int) Add;int (* pf)(int, int) Add;//int ret Add(2, 3);int ret pf(2, 3);int ret (*pf)(2, 3);printf(%d\n, ret);return 0; }如上代码所示 将Add赋给pf后pf就可以像Add函数一样地调用了也可以对pf解引用后调用语法上可以这样理解。 六、函数指针数组 存放函数指针的数组就是函数指针数组。 写法 在函数指针的基础上改变 如上所示 int (* ppr)(intint)这是一个函数指针 int (* ppr[5])(intint)此时ppr会和[5]先结合就是一个数组去掉数组名和个数剩下的 int (*)(intint)这个就是函数指针类型。 应用场景转移表 七、指向函数指针数组的指针 我们从函数指针数组入手 int (* pr[5])(intint)这是一个函数指针 现在我想要一个指向函数指针数组的指针所以就可以将ppr与一个*结合使其成为指针 int (* (*ppr)[5])(intint) pr; 这个就成为了 指向函数指针数组的指针 这个的函数指针类型就是去掉 (*ppr) 这个int (* [5] )(intint)就是一个函数指针类型 接下来画个图来理解
http://www.hkea.cn/news/14452467/

相关文章:

  • 网站开发建模工具网页制作流程视频
  • 个体户 做网站网站开发怎么销售
  • 计划书网站推广的目录怎么做企业官网维护
  • 保利威视 wordpress南昌seo推广外包
  • 咖啡公司网站建设策划书工作计划表模板
  • 双一流建设网站wordpress文章简介
  • 企业网站属于下面哪种媒体类型WordPress 主页缩略图链接
  • 亳州网站建设费用最差网站设计
  • 外链网站有哪些开封做网站哪家好
  • 最好网页游戏网站成都科技网站建设联
  • 江阴建设银行网站七牛 wordpress 媒体
  • 公司怎么建设网站阳泉住房和城乡建设部网站
  • 为shopify做推广的网站百度搜索引擎推广
  • 年终总结ppt模板免费下载网站谷歌seo技术
  • 潜江做网站的公司网站开发流程管理
  • 购买网站外链wordpress category 404
  • 佛山网站优化方法软件南宁模板建站定制网站
  • 常州做网站价格深圳网站建设合同范本
  • 阜宁网站建设公司中铁集团招聘
  • 建站网站公司调查培训机构网站
  • 婚庆类网站模板成都设计公司logo
  • ico在线制作网站建e网全景制作教程视频
  • 免费开源网站系统重庆建设工程有限公司
  • 专业济南网站建设价格网页设计个人主页模板
  • 前端一般模仿什么网站安阳后营贴吧
  • 游戏的网站策划应该怎么做建设营销型网站多少钱
  • 短视频seo排名seo网站关键词排名提升
  • 明星个人网站设计模板国外搜索关键词的网站
  • 厦门网站建设官网单页网站如何做cpa
  • 网站设置为默认主页莉莉卡是哪个网站做的