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

东莞比较出名的网站建设公司方法seo

东莞比较出名的网站建设公司,方法seo,18款禁用黄在线观看免费,wordpress添加icon文件夹目录 前言#xff1a; 指针详解 前言#xff1a; 1.CSDN由于我的排版不怎么好看#xff0c;我的有道云笔记比较美观#xff0c;请移步有道云笔记 2.修炼必备 1#xff09;入门必备#xff1a;VS2019社区版#xff0c;下载地址#xff1a;Visual Studio 较旧的下载 -…目录 前言 指针详解 前言 1.CSDN由于我的排版不怎么好看我的有道云笔记比较美观请移步有道云笔记 2.修炼必备 1入门必备VS2019社区版下载地址Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com) 2趁手武器印象笔记/有道云笔记 3修炼秘籍牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推求职就业一站解决_牛客网 (nowcoder.com) 4雷劫必备leetcode 力扣LeetCode官网 - 全球极客挚爱的技术成长平台  注遇到瓶颈怎么办百度百科_全球领先的中文百科全书 (baidu.com) 指针详解 ——指针是C语言中最核心的部分不了解指针就掌握不了C语言的精髓 1.指针是什么 1指针是内存中一个最小单元的编号即指针就是地址 2指针变量是用来存放内存地址的变量 图解 ​ 2.我们如何取出变量的地址 ——使用符号取出变量的地址使用相应数据类型的指针变量保存该地址 #include stdio.hint main() {int num 10;int* p num;//取出了num的地址赋给了p//打印查看地址printf(num %p\n, num);printf(p %p\n, p);return 0; } 运行结果 ​ 3.指针的大小 ——32位平台下的指针大小是4个字节64位的平台下指针的大小是8个字节 #include stdio.hint main() {printf(%d\n, sizeof(char*));printf(%d\n, sizeof(short*));printf(%d\n, sizeof(int*));printf(%d\n, sizeof(long*));printf(%d\n, sizeof(long long*));printf(%d\n, sizeof(float*));printf(%d\n, sizeof(double*));return 0; } 32位平台运行结果 64位平台运行结果  4.指针和指针类型 1指针的定义的方式 a.指针的定义方式数据类型*         char*字符指针         int*整型指针         long long*长长整型指针         float*单精度指针         double*双精度指针 b.一般情况下那种类型的指针则存储那种类型变量的地址 #include stdio.hint main() {char c a;int num 10;float f 1.342;double data 13.14;//一般情况那种类型的指针变量存储那种类型变量的地址char* ch c;int* p num;float* p1 f;double* p2 data;return 0; } 2指针的类型决定了指针向前或向后走一步有多大的字节距离 #include stdio.hint main() {char c c;int num 10;char* p1 c;int* p2 num;printf(%p\n, p1);printf(%p\n, p11);printf(%p\n, p2);printf(%p\n, p21);return 0; } 运行结果 3指针的类型决定了指针在解引用的时候能操作几个字节【访问权限多大】  #include stdio.hint main() {int num 0x44332211;char* p1 num;int* p2 num;printf(%d\n, *p1);printf(%d\n, *p2);*p1 0;*p2 0;return 0; } 调试查看结果 5. 野指针的问题 野指针就是指针指向的位置是不可知的【随机、不正确、无限制】 1指针未初始化 #include stdio.hint main() {int* p;printf(%p\n, p);return 0; } 运行结果  2指针越界访问  #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p arr;for (int i 0; i 11; i){//p的访问范围超过了数组的下标范围p就是野指针printf(%d , *p);p;}return 0; } 3返回局部变量的地址 #include stdio.h int test() {int a 10;return a; }int main() {int *p test();return 0; } 4指针指向的空间未释放 6.防止野指针的问题 1指针初始化 2小心指针越界 3指针指向空间释放及时置为NULL 4避免返回局部变量的地址 5使用指针之前检查指针的有效性 #include stdio.hvoid test(int* p) {//检查指针的有效性if(p NULL){} }int main() {int* p NULL;//不知道指针指向哪里的时候置为NULLtest(p);return 0; } 7.指针运算 1指针-整数 #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p;for (p arr; p arr[10]; p){printf(%d , *p);}return 0; } 2指针-指针【地址-地址】 两个指针指向的是同一块空间且类型是一致的两者相减得到是元素个数 #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p1 arr;int* p2 arr[10];//指针-指针printf(%d\n, p2 - p1);//10return 0; } 3指针的关系运算 #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p;for (p arr[10]; p arr[0];){*--p 0;}return 0; } 为什么这种方法也可以但是不使用呢 #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p;for (p arr[9]; p arr[0]; p--){*p 0;}return 0; } C语言中的标准规定允许指向数组元素的指针能与指向数组最后一个元素的后面那个内存位置的指针比较但不允许与数组元素第一个元素前面的那一个内存地址的指针比较 8.指针与数组 1数组名是数组首元素的地址数组名是取出整个数组的地址 #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p arr;printf(arr %p\n, arr);printf(arr 1 %p\n, arr 1);printf(arr %p\n, arr);printf(arr 1 %p\n, arr 1);return 0; } 运行结果 2指针能指向数组的任意一个元素即数组每个元素的地址指针均能获取  #include stdio.hint main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p arr;for (int i 0; i 10; i){printf(%p %p\n, arr[i], pi);}return 0; } 运行结果 9.二级指针【指针的指针】  int num 10; int* p num;//*p代表这是指针int表示指向的类型是int类型 int**pp p;//*pp代表是指针int*表示指向的类型是int*类型 #include stdio.hint main() {int num 10;int* p num;//*p表示这是一个指针指向的类型是intint** pp p;//*pp表示这是一个指针指向的类型是int*printf(%d\n, num);//10printf(%d\n, *p);//10printf(%d\n, **pp);//10return 0; } 10.字符指针的使用方式 1字符指针指向一个字符变量 2字符指针指向一个常量字符串【常量字符串的首元素地址赋给字符指针】 #include stdio.hint main() {char ch a;//字符指针指向一个字符变量char* p1 ch;printf(%c\n, *p1);//字符指针指向一个常量字符串char* p2 abcdef;printf(%c\n, *p2);printf(%s\n, p2);return 0; } 运行结果  一道简单的笔试题: #include stdio.hint main() {char str1[] abcdef;char str2[] abcdef;const char* arr1 abcdef;const char* arr2 abcdef;if (str1 str2){printf(str1 and str2 are same\n);}else{printf(str1 and str2 are not same\n);}if (arr1 arr2){printf(arr1 and arr2 are same\n);}else{printf(arr1 and arr2 are not same\n);}return 0; } 运行结果 为什么当const char*是存储字符串常量的时候两个指针均指向字符串常量首元素地址 11.指针数组【数组】 整型数组数据是整型的数组 浮点数组数据是浮点型的数组 指针数组数据是指针的数组【即数组中的元素是指针类型】 图解三种数组类型 #include stdio.hint 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* arr[3] { arr1,arr2,arr3 };//存储了三个数组的首元素地址for (int i 0; i 3; i){for (int j 0; j 5; j){printf(%d , *(arr[i] j));//arr[i][j]}printf(\n);}return 0; } 运行结果 12.数组指针【指针】 ——指向数组的类型 (*p)[大小] 所指数组名 int num 10; int* p num;//指向int的指针 double data 13.14; double* p data;//指向double的指针 int arr[10]; int (*p)[10] arr;//指向数组的指针 ——如何判断数组指针 ()的结合性比[]高,所以先与*()里面的*号结合再与[]结合 - 指针 #include stdio.hvoid printArr(int(*p)[5], int row, int col) {for (int i 0; i row; i){for (int j 0; j col; j){//printf(%d , p[i][j]);//printf(%d , *(*(p i) j));printf(%d , *(p[i] j));}printf(\n);} }int main() {int arr[3][5] { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };int row sizeof(arr) / sizeof(arr[0]);int col sizeof(arr[0]) / sizeof(arr[0][0]);printArr(arr, row, col);return 0; } 13.数组传参和指针传参 1一维数组传参 #include stdio.h//一维数组传参 //传参方式1 void test(int arr[]){} //传参方式2 void test1(int arr[10]){} //传参方式3 void test2(int* arr){}//一维指针数组传参 //传参方式1 void demo1(int* p[10]){} //传参方式2 void demo2(int** arr){} //解释*arr接收str数组另一个*表示元素是指针int main() {int arr[5] { 0 };test(arr);test1(arr);test2(arr);//一维指针数组传参int* str[10] { 0 };demo1(str);demo2(str);return 0; } 2二维数组的传参方式 #include stdio.h//传参方式1 void test(int arr[3][3]){} //传参方式2 void test1(int arr[][3]){} //传参方式3 void test2(int(*arr)[3]){}int main() {int arr[3][3] { 0 };test(arr);test1(arr);test2(arr);return 0; } 3一级指针传参 #include stdio.h //传参方式1 void test(int* p){} //传参方式2 void test1(int* *p){}int main() {int* p NULL;test(p);return 0; } 4二级指针传参 #include stdio.hvoid test(int** p) {}int main() {int** p NULL;test(p);return 0; } 14.函数指针 ——指向的函数返回值 (*p)(指向函数的形参) 所指函数名 int* p; //指向int的指针 double* p; //指向double的指针 int (*p)(int,int);//指向函数的指针 //解答*和p结合说明是指针然后和(int,int)结合说明是函数int是返回值 #include stdio.hint add(int x, int y) {return x y; }int main() {//函数是有地址的//printf(%p\n, add);int (*p)(int, int) add;int ret p(5, 3);printf(%d\n, ret);//8return 0; } 思考以下代码 //代码1 (*(void (*)())0)(); //代码2 void (*signal(int , void(*)(int)))(int); 解释 代码1把0强制转为为void(*)()的函数指针,在0地址处有一个函数 函数无返回值无形参这个地方表调用代码2函数名是signal参数为int和函数指针void(*)(int) signal的返回类型是函数指针该函数指针的函数返回值是void参数是int 15.函数指针数组 ——把函数地址存储在数组里面这个数组就叫做函数指针数组 int (*p[])(形参); ——使用途径转移表 #include stdio.hint Add(int x, int y) {return x y; } int Sub(int x, int y) {return x - y; } int Mul(int x, int y) {return x * y; } int Div(int x, int y) {return x / y; }void menu() {printf(******************************\n);printf(**** 1. add 2.sub *****\n);printf(**** 3. mul 4.div *****\n);printf(**** 0. exit *****\n);printf(******************************\n); }int main() {int input 0;int x 0;int y 0;int ret 0;//转移表 - 函数指针的数组int (*pfArr[])(int, int) { NULL, Add, Sub, Mul, Div };//0 1 2 3 4do{menu();printf(请选择:);scanf(%d, input);if (input 0){printf(退出计算器\n);break;}else if (input 1 input 4){printf(请输入两个操作数:);scanf(%d %d, x, y);ret pfArr[input](x, y);printf(%d\n, ret);}else{printf(选择错误\n);}} while (input);return 0; }
http://www.hkea.cn/news/14483873/

相关文章:

  • 有哪些程序做的网站公众号开发用什么语言
  • 做推广赚钱的网站做网站需要招聘内容
  • 哈尔滨营销网站制作申请渠道门户网站是什么意思
  • 网站百度收录秒收方法垄断了网站建设
  • 课程网站的设计湛江网站推广优化
  • 石景山建网站招聘网站有哪些平台
  • 郑州网站设计多少钱南昌做网络推广的
  • 建设网站公司域名天津的网站建设公司哪家好
  • 威海建设集团网站首页互联网公司简介
  • 网站备案主体域名个人电脑建网站
  • 建立网站需要什么技术网站快速排名上
  • 网站建设中期目标freenom怎么做网站
  • 重庆市工程建设信息网官方网站网页设计存在的问题及分析
  • 怎样创建网站app国内知名的咨询公司排名
  • 网站的费用多少网站生成app工具
  • 深圳住房和建设局网站 宝安网站建设鼎网络
  • 怎么给网站wordpresswordpress邮件伪造
  • 怎么样建设企业网站wordpress商品采集
  • 甘肃省建设厅安全员官方网站网站运营的含义
  • 聊城阳谷网站建设石家庄全网seo
  • 龙岩新罗区建设局网站网站建设入门教程视频
  • 成都市网站设计开发网站建设中服务器搭建方式
  • 上海网站开发哪家好薇暴雪国际服
  • 百度网站建设如何网站信息登记表扫描件
  • xwiki做的网站wordpress 心情评论
  • 北京城乡建设网站wordpress高仿主题
  • 南沙区交通和建设局网站海外推广专员
  • 网站线下推广方式网络营销渠道
  • 事业单位 网络网站建设天翼云虚拟主机
  • 中国铁路总公司建设管理部网站做机械设计兼职的网站