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

在猪八戒做网站有保障吗网站推销话术

在猪八戒做网站有保障吗,网站推销话术,计算机网络技术网站开发与设计,天津网站建设招聘目录 前言: 1. 字符指针 2. 指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3数组指针的使用 前言: 🍂在了解今天的内容之前我们先复习一下指针的基本概念: 1,内存单元是有编号的&#xff…

目录

前言:

1. 字符指针

2. 指针数组

3.数组指针

3.1数组指针的定义

3.2 &数组名VS数组名

3.3数组指针的使用


前言:

🍂在了解今天的内容之前我们先复习一下指针的基本概念:

1,内存单元是有编号的,编号就是我们所说的地址,也可以叫指针,它们是一回事。如果我们把一个指针或地址存起来的话,我们就需要一个指针变量

2,指针变量就是个变量,用来存放地址,地址唯一标识一块空间。

3,地址或指针的大小是固定的4/8个字节(32位平台/64位平台),也可以理解为指针变量的大小是4/8个字节。

4,指针是有类型的,指针的类型决定了指针加减整数的步长,指针解引用操作时候的权限。


1. 字符指针

在指针的类型中我们知道有一种指针类型为字符指针 char* :
🍂一般使用:

#include <stdio.h>int main()
{char ch = 'w';//取出的变量ch的地址是char类型的变量,//就可以把它放在char* 类型的指针里边去char* pc = &ch;return 0;
}

🍂还有一种使用方式如下:

#include <stdio.h>int main()
{//这个字符串作为一个表达式的时候它的值是首字符的地址,指向字符串的本质是指向了第一个字符,//但因为字符串在内存中是连续存放的,也可以认为是指向了一个字符串//加const是为了防止有人通过*p修改字符串常量里边的内容const char* p = "abcdef";printf("%s\n", p);//如果对这个指针解引用,因为它是char*类型,解引用只拿到一个字符,所以格式控制符应该用“%c”printf("%c\n", *p);return 0;
}

 🍂下面我们来看一道面试题:

#include <stdio.h>int main()
{char str1[] = "hello bit.";char str2[] = "hello bit.";const char* str3 = "hello bit.";const char* str4 = "hello bit.";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;
}

🍂这里最终输出的是: 

🎈分析: 

 如上图所示,st1数组和str2数组是两块独立的空间,它们的起始地址肯定不相同,所以打印的结果为不同;“hello bit”是一个常量字符串,它不能被修改,而对于常量字符串来说,它的内容一样的时候,只会保存一份,不会保存多份,当这个字符串把首字符的地址交给str3的时候,str3就是一个指针变量,里边存的是'h'的地址,同理,str4指针变量里边存放的也是'h'的地址,所以,str3和str4打印结果相同。


2. 指针数组

在刚接触指针的时候我们就说过指针数组是数组。那该怎么理解它呢?

🎈我们说:

字符数组是存放字符的数组;

整型数组是存放整形的数组;

那指针数组就是存放指针的数组,即存放在数组中的元素都是指针类型的。

🎈例:

int* arr[5];//存放整形指针的数组
char* ch[6];//存放字符指针的数组

 🍂下面我们使用指针数组模拟一个二维数组:

#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;
}

 🍇运行结果:


3.数组指针

3.1数组指针的定义

数组指针是指针?还是数组?

答案是指针。

  • 我们知道字符指针是指向字符的指针;
  • 整形指针是指向整形的指针;
  • 浮点型指针是指向浮点型的指针;
  • 那数组指针就是指向数组的指针!

3.2 &数组名VS数组名

🎈对于下面的数组:

int arr[10];

arr 和 &arr 分别是啥?我们知道arr是数组名,数组名表示数组首元素的地址。那&arr数组名到底是啥?我们看一段代码:

#include <stdio.h>int main()
{int arr[10];printf("%p\n", arr);printf("%p\n", &arr);return 0;
}

🍂运行结果如下: 

可见数组名和&数组名打印的地址是一样的,难道两个是一样的吗?我们再看一段代码:

#include <stdio.h>int main()
{int arr[10] = { 0 };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;
}

🍂运行结果如下: 

  1. 根据上面的代码我们发现,其实&arr和arr,虽然值是一样的,但是意义应该不一样的。
  2. 实际上: &arr 表示的是数组的地址,而不是数组首元素的地址。
  3. 本例中 &arr 的类型是: int(*)[10] ,是一种数组指针类型。
  4. 数组的地址+1,跳过整个数组的大小,所以 &arr+1 相对于 &arr 的差值是40。

3.3数组指针的使用

 那数组指针是怎么使用的呢?

既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址,看代码:

#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int(*p)[10] = &arr;//把数组arr的地址赋给数组指针变量pint i = 0;for (i = 0; i < 10; i++){//因为p里边存放的是&arr,对它解引用,//就相当于拿到了数组名(取地址和解引用可以互相抵消),//这时候访问数组里边每个元素的时候还得用下标(*p)[i],就会显得多此一举//所以我们一般很少这样写代码(*p) == (*&arr) == (arr);}//正确写法int* p = arr;int i = 0;for (i = 0; i < 10; i++){printf("%d ", p[i]);}return 0;
}

🍂数组指针的使用: 

#include <stdio.h>void print_arr1(int arr[3][5], int x, int y)//形参也是使用二维数组的形式
{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");}
}void print_arr2(int (*arr)[5], int x, int y)//形参的部分使用的是指针
{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");}
}int main()
{int arr[3][5] = { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} };print_arr1(arr, 3, 5);//二维数组传参//数组名arr,表示首元素的地址//但是二维数组的首元素是二维数组的第一行//所以这里传递的arr,其实相当于第一行的地址,是一维数组的地址//可以数组指针来接收print_arr2(arr, 3, 5);//二维数组传参return 0;
}


 


🍂下面我们再来分析一组代码:

int arr[5];

arr是一个数组,数组有5个元素,每个元素是整形类型,所以arr是一个能够存放5个整形数据的数组 

int* parr1[10];

parr1是一个数组,数组有10个元素,每个元素的类型是int*类型 

int(*parr2)[10];

parr2是一个数组指针,该指针是指向数组的,指向的数组有10个元素,每个元素的类型是int 类型

int(*parr3[10])[5];

parr3是一个数组,是存放数组指针的数组,数组有10个元素;存放的这个数组指针,指向的数组有5个元素,每个元素是int类型 

http://www.yayakq.cn/news/973107/

相关文章:

  • 明星网页网站制作wordpress把文章转语音
  • 网站建设的售后服务怎么写网站开发宣传
  • 海口专业网站制作策划wordpress博客软件
  • 招标代理网站建设怎么搜索整个网站内容
  • 有哪些做任务的网站网站 二级域名
  • 餐饮业网站建设网站搭建技术有哪些
  • 网站死链接淘宝商家版登录入口
  • 项城市住房和城乡建设局网站网站备案时网站没有内容可以
  • 通信工程建设网站怎么设计页面
  • 网站建设与运营方案微网站功能列表
  • 怎么将自己做的网站放到网上企业网站如何提高
  • 网站描述是什么2345网站入口
  • 目前网站开发主要有哪些工具济南网站建设系统
  • dedecms 调用网站内部搜索软件开发入门先学什么
  • 北京出名的室内设计公司企业官网网站优化公司
  • 杭州婚恋网站建设十大最好玩网页游戏
  • 《网页设计与网站建设》A卷答案菜鸟教程网官网入口
  • 浙江住房和建设厅网站网站的主流趋势
  • 莒县网站建设好的做问卷调查的网站好
  • 课件ppt模板免费下载网站网络营销产品有哪些特点
  • 网站策划书格式及范文1000字免费在哪修改网站关键词
  • iis 5 如何添加网站wordpress在线商城插件
  • 支付宝网站开发流程疯狂影视
  • 照明做外贸的有那些网站兰州建设一个网站多少钱
  • 国外有什么优秀的网站推荐自己怎么做拼单网站
  • 深圳市建设科技促进中心网站中铁建设集团门户登录网
  • 如何写手机适配网站随州网站设计开发方案
  • 没网站怎么做二维码扫描连接网片点焊机
  • 深圳市专业网站建设公司网络营销推广
  • 下城区做网站国外平面设计作品集