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

网站建设三网合一是什么巨量引擎

网站建设三网合一是什么,巨量引擎,中央广播电视总台2019主持人大赛,西安免费做网站公司1.概念 本质是函数,函数的返回值为指针。类比着指针数组。 指针数组:本质是数组,数组中存放指针。 数据类型 *数组名[元素个数]; int a[2][3]; int *arr[2] {a[0],a[1]}; //*(*(arri)j) *(arr[i]j) arr[i][j] 2.定义格式 格式: 数…

1.概念

本质是函数,函数的返回值为指针。类比着指针数组。

指针数组:本质是数组,数组中存放指针。

数据类型 *数组名[元素个数];

int a[2][3];

int *arr[2] ={a[0],a[1]};

//*(*(arr+i)+j) *(arr[i]+j) arr[i][j]

2.定义格式

格式:

数据类型 *函数名(参数列表)

{

        函数体;

        return 地址; //当失败时一般返回NULL

}

3.函数内开辟空间

案例一

#include <stdio.h>char *fun()
{char buf[32] = "hello";return buf;
}int main(int argc, char const *argv[])
{char *p = fun();printf("%s\n", p);return 0;
}
结果未知,因为返回局部变量地址,函数调用结束后没有权限使用栈区的空间了所以结果是不可控的。如果被其他进程占用,可能会报段错误或者打印奇怪的东西。

修改:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>char *fun()
{char *p = (char *)malloc(32);if (NULL == p){printf("malloc lost\n");return NULL;}// p="hello"; //让p又指向了常量区的hello而不指向堆区了strcpy(p, "hello");return p;
}int main(int argc, char const *argv[])
{char *p = fun();  if (NULL == p){printf("fun err\n"); //如果函数返回值为NULL可以打印一句错误提示return -1;   //如果错误让主函数结束,程序不再往后运行了}printf("%s\n", p);free(p);p = NULL;return 0;
}

案例二

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void fun(char *p)  //p=NULL
{p = (char *)malloc(32);if (NULL == p){printf("malloc lost\n");}strcpy(p, "hello");
}int main(int argc, char const *argv[])
{char *p = NULL;fun(p);printf("%s\n", p);  //函数调用结束后,主函数中的p还是指向了NULL,打印所以段错误free(p);p = NULL;return 0;
}

 报端错误:因为主函数中p指向了NULL,函数内改变形参p不会影响到主函数中的变量p, 所以函数调用完后主函数中的p还是指向了NULL。

修改:传递二级指针

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void fun(char **p) //p = &q;
{*p = (char *)malloc(32); //*p = *&q = qif (NULL == *p){printf("malloc lost\n");}strcpy(*p, "hello"); //*p = *&q = q
}int main(int argc, char const *argv[])
{char *q = NULL;fun(&q);                    //函数调用结束后,q指向了堆区空间printf("%s\n", q);free(q);q = NULL;return 0;
}

案例三:数组传递

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void fun(int arr[5])  //arr类型为int *, 本质还是传递指针
{arr[0] = 100;printf("%ld\n", sizeof(arr));
}int main(int argc, char const *argv[])
{int a[5] = {1, 2, 3, 4, 5};fun(a);printf("%d\n", a[0]);return 0;
}
传递数组的形式是为了让用户知道要传递的是一个数组,但本质还是传递数组的首地址,也就是传递指针。
http://www.hkea.cn/news/720981/

相关文章:

  • 中纪委网站两学一做征文资源平台
  • java高端网站建设现在广告行业好做吗
  • wordpress 制作下载优化关键词怎么做
  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口
  • 点餐系统网站建设画质优化app下载
  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包
  • 中国工程局人才招聘网福建seo推广方案
  • 深圳南山做网站的公司百度投诉中心
  • 辽宁建设工程信息网业绩认定武汉网站优化公司
  • 莱芜都市人才网上海网站seo公司
  • 广州做鞋的网站怎么让某个关键词排名上去
  • 温州平阳县网站建设兼职东莞网络推广哪家公司奿
  • 做单页网站价格微信朋友圈广告在哪里做
  • 濮阳家电网站建设一般开车用什么导航最好
  • html5 图片展示网站大作设计网站
  • 河北正规网站建设比较百度一下你就知道官页
  • 企业网站建设哪家服务好福州网站关键词推广