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

专做海报设计的网站招商项目发布平台

专做海报设计的网站,招商项目发布平台,零售erp软件排名,自己做的网站验证码出不来怎么✨博客主页#xff1a;小钱编程成长记 #x1f388;博客专栏#xff1a;进阶C语言 进阶指针#xff08;一#xff09; 0.回顾初阶指针1.字符指针1.1 相关面试题 2.数组指针3.指针数组3.1 数组指针的定义3.2 数组名VS数组名3.3 数组指针的使用 4.数组传参和指针传参4.… ✨博客主页小钱编程成长记 博客专栏进阶C语言 进阶指针一 0.回顾初阶指针1.字符指针1.1 相关面试题 2.数组指针3.指针数组3.1 数组指针的定义3.2 数组名VS数组名3.3 数组指针的使用 4.数组传参和指针传参4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参 5.函数指针5.1 两段有趣的代码 总结 0.回顾初阶指针 指针就是个变量用来存放地址地址唯一标识一块内存空间。内存单元数有编号的编号地址指针指针的大小是固定的4/8个字节32位平台/64位平台。指针是有类型的指针的类型决定了指针的±整数的步长指针解引用操作的时候的权限。指针的运算。 1.字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; 它有两种使用方式 指向字符指向字符串实际上指向的是首字符但因为字符串中的字符都是连续的所以也可以说是指向字符串 指针指向字符 int main() {char ch w;char *pc ch;*pc w;return 0; }指针指向字符串 int main() {const char* pstr abcdef;//这里是把一个字符串放到pstr指针变量里了吗printf(%s\n, pstr);return 0; } const char* pstr “abcdef”; 这里不是把一个字符串放到pstr指针变量里而是将字符串的首字符的地址放到了pstr里。因为当字符串作为一个表达式时结果是首字符的地址。 const *pstr “abcdef” 和 char arr[] “abcdef” 在内存中存储的都是abcdef\0 因为abcdef” 和 arr 表示的都是字符串的首字符地址所以我们可以将常量字符串想象成数组名“abcdef” arr。 如下所示 有些朋友可能会发现为什么指针指向常量字符串时前面要加上const比如const char* pstr “abcdef”; 原因是常量字符串在内存中不能被修改若修改会出现写入错误这个错误很难被及时发现。如下所示 用const修饰指针变量使其变成常变量不能被修改即使不小心修改了也能在编译期间及时发现错误。如下所示 1.1 相关面试题 //在《剑指offer》一书中有这样一道题 #include stdio.h int main() {char str1[] hello;char str2[] hello;const char* str3 hello;const char* str4 hello;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; }结果为 为什么呢 把常量字符串放到字符数组中字符数组中存放的是字符。 每个数组创建时在内存中开辟的空间并不同所以用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。几个 数组的内容可能会相同但每个数组在内存中的地址一定不同 所以str1和str2代表的首字符地址不同。C/C会把常量字符串存储到一个单独的内存区域。因为常量字符串不能被修改没必要保存多份所以在内存中只存储一份。 当几个指针指向同一个字符串时实际上它们指向的也是同一个地址。 2.数组指针 在初阶指针中我们也学了指针数组。指针数组是一个存放指针的数组存放在数组中的元素都是指针类型的。 我们来复习一下下面的指针数组是什么意思 int* arr1[10]; //整形指针的数组 char *arr2[4]; //一级字符指针的数组 char **arr3[5];//二级字符指针的数组指针数组的使用场景举例 //模拟二维数组 #include stdio.h int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,5,6,7 };int* arr[] { arr1, arr2, arr3 };int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 5; j){printf(%d , arr[i][j]);}printf(\n);}return 0; }//一次性打印多个字符串 #include stdio.h int main() {char* arr[3] { hello, hello, C };int i 0;for (i 0; i 3; i){printf(%s , arr[i]);}return 0; }3.指针数组 3.1 数组指针的定义 数组指针是指针还是数组 答案是指针。 我们已经知道 整型指针 int * pint; 能够指向整型数据的指针。 浮点型指针 float * pf; 能够指向浮点型数据的指针。 那数组指针应该是能够指向数组的指针。 下面代码哪个是数组指针 int *p1[10];//p1是指针数组名 int (*p2)[10];//p2是数组指针解释 int (*p)[10]; //解释p先和*结合说明p是一个指针变量然后指向的是一个大小为10个整型的数组。所以p是一个指针指向一个数组叫数组指针。 //注意必须明确指针指向的数组有几个元素不写时默认为0与真实数组的元素个数不同会出错。 //指向的数组的元素个数不同数组指针的类型也不同。3.2 数组名VS数组名 arr和arr分别是什么 我们知道arr是数组名数组名表示的是数组的首元素地址。 那arr数组名是什么呢 我们先来看一段代码和运行结果 数组名和数组名打印的地址是一样的。 难道两个是一样的吗 我们再来看一段代码和运行结果 根据上面的代码我们发现其实arr和arr虽然值是一样的但是意义是不一样的。 实际上 arr 表示的是数组的地址而不是数组首元素的地址。 本例中 arr 的类型是 int(*)[10] 是一种数组指针类型 数组的地址1跳过整个数组的大小所以 arr1 相对于 arr 的差值是40 3.3 数组指针的使用 数组指针指向的是数组那么数组指针中存放的应该是数组的地址。 #include stdio.h int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,0 };int(*p)[10] arr;//把数组arr的地址赋值给数组指针变量preturn 0; }小提示 printf(%d\n, (*p)[i]);//(*p) *(arr) arr printf(%d\n, p[i]);//p[i] *(pi) 因为p arr,所以pi等于跳过了i个数组数组指针主要应用于二维数组的传参 #include stdio.hvoid print_arr1(int(*arr)[5], int row, int col)//arr是数组指针 {int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){printf(%d , arr[i][j]);//arr[i][j] (*(arri))[j], //arri相当于二维数组的第i行的一维数组的地址//*(arri)相当于二维数组的第i行的一维数组的首元素地址。}printf(\n);} }int main() {int arr[3][5] { 1,2,3,4,5,6,7,8,9,10 };print_arr1(arr, 3, 5);//数组名arr表示首元素的地址//但是二维数组的首元素是二维数组的第一行//所以这里传递的arr其实相当于第一行的地址是一维数组的地址//可以数组指针来接收return 0; }4.数组传参和指针传参 4.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); }4.2 二维数组传参 void test(int arr[3][5]) {} void test(int arr[][5])//行可以省略但列不能省略因为若不确定列数据连续存储后就无法正确拆开连续存储的数据排成几行输出。 {}void test(int(*arr)[5])//因为二维数组的首元素是一维数组所以形参用指针时要用数组指针。 {}int main() {int arr[3][5] { 0 };test(arr); }4.3 一级指针传参 #include stdio.h void print(int* p, int sz) {int i 0;for (i 0; i sz; i){printf(%d\n, *(p i));} } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9 };int* p arr;int sz sizeof(arr) / sizeof(arr[0]);//一级指针p传给函数形参写成一级指针就行了。print(p, sz);return 0; }思考 当一个函数的参数部分为一级指针的时候函数能接收什么参数 例如 void test1(int *p)//test1函数能接收什么参数 {}int main() {int a 10;test1(a);//传整型变量的地址int* pa a;test1(pa);//传整型指针int arr[10] { 1,2,3,4,5,6,7,8,9,0 };test1(arr);//传整形一维数组的数组名return 0; }4.4 二级指针传参 #include stdio.h void test(int** ptr) {printf(num %d\n, **ptr); } int main() {int n 10;int* p n;int** pp p;test(pp);test(p);return 0; }思考 当函数的参数为二级指针的时候可以接收什么参数 例如 void test(char** p) {}int main() {char c b;char* pc c;char** ppc pc;char* arr[10];test(pc);//指针的地址test(ppc);//二级指针test(arr);//指针数组的数组名首元素指针的地址return 0; }5.函数指针 我们先来看一段代码 #include stdio.hint Add(int x, int y) {return x y; }int main() {printf(%p\n, Add);printf(%p\n, Add);return 0; }由此可见 函数名和函数名都是函数的地址 int (*pf1)(int, int) Add;//pf1就是函数指针变量pf1先和*结合说明pf1是指针指向的是一个函数指向的函数有两个参数参数类型都是int返回类型为int 举例 #include stdio.hint Add(int x, int y) {return x y; }int main() {int (*pf1)(int, int) Add;int ret1 (*pf1)(2, 3);//函数名是地址地址也是函数名所以写不写*都行*几乎是个摆设写几个都行。int ret11 (pf1)(2, 3);//int ret3 Add(2, 3);错误因为 取的内容必须是 左边出现过的。int (*pf2)(int, int) Add;int ret2 (*pf2)(2, 3);int ret22 (pf2)(2, 3);int ret33 Add(2, 3);printf(%d\n, ret1);printf(%d\n, ret11);printf(%d\n, ret2);printf(%d\n, ret22);printf(%d\n, ret33);return 0; }小知识 int ret3 Add(2, 3); 错误因为 取的内容必须是 左边出现过的。 5.1 两段有趣的代码 《C陷阱和缺陷》一书中提及这两个代码 代码1 (*(void (*)())0)(); void (*)()是一个函数指针类型(void ( * )())0 是把0强转成这种函数指针类型的数据。这个代码是用来调用0地址处的函数。这个函数没有参数返回类型是void。 *函数地址0的操作可写可不写因为函数地址也就相当于函数名 代码2 void (*signal(int, void(*)(int)))(int); 这个代码是一次函数声明声明的是signal函数signal函数的参数有2个第一个是int类型第二个是函数指针类型该类型是void ( * )(int)该函数指针指向的函数参数是int类型的返回类型是void。signal函数的返回类型也是函数指针类型该类型是void (*)(int)该函数指针指向的函数参数是int返回类型是void。 疑问 代码2太复杂了能否简化呢 可以用typedef类型重命名来解决: 》》与函数指针类型相关的内容不能写在类型的左/右边只能写在类型中 * 的后面。 typedef void (*pfun_t)(int);//类型重命名 pfun_t signal(int, pfun_t);//函数调用 然而 typedef void (*)(int) pfun_t;//错误 void (*)(int) signed(int, void (*)(int))//错误 总结 本片文章我们回顾了初阶指针又学习了两种字符指针、指针数组、数组指针及其使用、一维二维的数组传参和指针传参、函数指针。感谢大家的阅读大家一起进步。如果文章有错误的地方欢迎大家在评论区指正。 点赞收藏加关注C语言学习不迷路
文章转载自:
http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn
http://www.morning.fslxc.cn.gov.cn.fslxc.cn
http://www.morning.gwqkk.cn.gov.cn.gwqkk.cn
http://www.morning.abgy8.com.gov.cn.abgy8.com
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn
http://www.morning.jlpdc.cn.gov.cn.jlpdc.cn
http://www.morning.pffqh.cn.gov.cn.pffqh.cn
http://www.morning.wmfr.cn.gov.cn.wmfr.cn
http://www.morning.brmbm.cn.gov.cn.brmbm.cn
http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn
http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn
http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn
http://www.morning.hhqtq.cn.gov.cn.hhqtq.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.youprogrammer.cn.gov.cn.youprogrammer.cn
http://www.morning.xymkm.cn.gov.cn.xymkm.cn
http://www.morning.fjptn.cn.gov.cn.fjptn.cn
http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn
http://www.morning.ykshx.cn.gov.cn.ykshx.cn
http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn
http://www.morning.zpfqh.cn.gov.cn.zpfqh.cn
http://www.morning.fcwb.cn.gov.cn.fcwb.cn
http://www.morning.dfndz.cn.gov.cn.dfndz.cn
http://www.morning.ypktc.cn.gov.cn.ypktc.cn
http://www.morning.lgznc.cn.gov.cn.lgznc.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn
http://www.morning.lkmks.cn.gov.cn.lkmks.cn
http://www.morning.chzbq.cn.gov.cn.chzbq.cn
http://www.morning.hqqpy.cn.gov.cn.hqqpy.cn
http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn
http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn
http://www.morning.qnxzx.cn.gov.cn.qnxzx.cn
http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn
http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn
http://www.morning.wqwbj.cn.gov.cn.wqwbj.cn
http://www.morning.bftr.cn.gov.cn.bftr.cn
http://www.morning.qbksx.cn.gov.cn.qbksx.cn
http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn
http://www.morning.xwlmr.cn.gov.cn.xwlmr.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn
http://www.morning.qzzmc.cn.gov.cn.qzzmc.cn
http://www.morning.wbxtx.cn.gov.cn.wbxtx.cn
http://www.morning.grbgn.cn.gov.cn.grbgn.cn
http://www.morning.gcysq.cn.gov.cn.gcysq.cn
http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.nydgg.cn.gov.cn.nydgg.cn
http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn
http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn
http://www.morning.zrpys.cn.gov.cn.zrpys.cn
http://www.morning.yzmzp.cn.gov.cn.yzmzp.cn
http://www.morning.yjtnc.cn.gov.cn.yjtnc.cn
http://www.morning.yktr.cn.gov.cn.yktr.cn
http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn
http://www.morning.kfrhh.cn.gov.cn.kfrhh.cn
http://www.morning.ndtzy.cn.gov.cn.ndtzy.cn
http://www.morning.trrpb.cn.gov.cn.trrpb.cn
http://www.morning.plqhb.cn.gov.cn.plqhb.cn
http://www.morning.rnkq.cn.gov.cn.rnkq.cn
http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn
http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn
http://www.morning.dtgjt.cn.gov.cn.dtgjt.cn
http://www.morning.wmqxt.cn.gov.cn.wmqxt.cn
http://www.morning.hwljx.cn.gov.cn.hwljx.cn
http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn
http://www.morning.tbksk.cn.gov.cn.tbksk.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.ykgp.cn.gov.cn.ykgp.cn
http://www.morning.mmsf.cn.gov.cn.mmsf.cn
http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn
http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn
http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn
http://www.tj-hxxt.cn/news/249776.html

相关文章:

  • p2p商城网站建设文字图片在线制作生成
  • 企业网站建设找哪家seo营销策划
  • php做购物网站详情页的代码网站建设内部需求调查表
  • 济南网站建设_美叶网络网站开发毕业答辩演讲稿范文
  • 成都网站建设 赢展wordpress如何去除页眉部分
  • 支付宝 网站接口网站推广产品
  • 广西电商网站个人网站-个人主页作业
  • 焦作网站建设策划wordpress视频适应播放器
  • 完全免费的网站源码ui培训
  • 环保设备网站怎么做枣庄建网站
  • 江苏建设工程招标网官方网站手机端网站做app开发
  • 自己做免费网站的视频专业的seo搜索引擎优化培训
  • 做网站盈利方式泉州公司网站模板建站
  • 房地产网站建设解决方案梦幻西游网页版礼包码
  • 郑州外贸网站建设公司企业网络营销策划案
  • 上海做网站cnsosu网站内部结构
  • 做网站服务器是什么新公司做网站怎么做
  • 汕头高端网站建设前端电商网站开发周期
  • 什么事网站建设开发定制软件
  • 兄弟网络(西安网站建设制作公司)网站建设步和客户沟通
  • 视频网站怎么做可以播放电视剧百度官网建设
  • 做不锈钢的网站有哪些海南在线人才
  • 2016网站优化漳州网站建设哪家最权威
  • 织梦 网站名称资源软件库
  • 网站建设调查通知中煜建设有限公司网站
  • 视频网站dedecms怎样在建立公司网站
  • 深圳网站建设-中国互联宁波网站建设公司推荐哪家
  • 阿里云服务器做网站djangowordpress agoda
  • 贵州建设厅报名登录网站开心消消乐官方网站开发公司
  • 网站制作 广州电子商务网络营销方式有哪些