指针和数组——面试基础(1)
来源:互联网 发布:大数据概念股票有哪些 编辑:程序博客网 时间:2024/06/07 03:32
刚开始学习编程的时候总以为数组就是指针,指针就是数组,容易混淆。其实,数组和指针是有区别的。
数组与指针的区别:
数组:
1、数组要么在静态存储区被创建(全局数组),要么在栈上被创建(局部数组)
2、数组名对应着(不是指向)一块内存(大小已知),其地址与容量在生命周期内保持不变,只有数组内容 可以改变。
指针:
1、指针可以随时指向任意类型的内存块(不同类型可以通过强制类型转换来实现),它的特征是“可变的”。
2、常用指针来操作动态内存。
指针远比数组灵活,但也更危险。
比较内存内容:
char arr[] = "hello";arr[0] = 'a';arr指向一块确定的内存,现在数组里的内存是可以通过访问来修改的
char* p = "hello";p[0] = 'b';p此时指向的是一块char类型的内存地址,地址里有一个常量字符串,p[0]企图修改常量字符串内容是不被允许的,就像是你想将2赋值给1(1 = 2)一样是不被允许的。
内存容量
char arr[] = "hello";char* p = arr;cout<<sizeof(arr)<<endl; //6cout<<sizeof(p)<<endl; //4arr数组里包括“h e l l o \0”等六个字符,sizeof(arr)相当于求数组的容量。
在C/C++语言中没办法知道指针所指向的内存容量,sizeof(p)相当于求指针类型的大小(相当于sizeof(char*))
void fun(char arr[50]){<span style="white-space:pre"></span>cout<<sizeof(arr)<<endl;//4}当数组作为函数的参数进行传递时,该数组自动退化成了同类型的指针,不管数组容量有多大,sizeof(arr)都是4,相当于sizeof(char*),所以我们在以数组为参数的函数中,我们就不能求数组的大小了,如果函数需要用到数组的大小,需要在定义数组的地方求出数据并一块传入。
0 0
- 指针和数组——面试基础(1)
- 指针和数组基础
- (编程基础)指针和数组
- NDK开发学习之C学习基础篇-1(指针,数组于指针,指针和函数参数,二级指针)
- 面试复习三、指针和数组(一)
- <C基础>数组和指针
- 主题四 指针和数组(上)----22.数组基础
- C++指针数组和数组指针--笔试面试系列
- 【程序员面试宝典读书笔记】指针数组和数组指针
- 程序员面试(4):指针数组和数组指针
- c语言—指针基础(3:指针和数组的关系)
- C笔记1—指针和数组
- c语言基础——指针数组
- c语言基础—指针与数组
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- c++——数组指针和指针数组
- 类和对象的基础8——对象指针和对象数组
- C++基础之指针数组和数组指针(重点是后面的名词)
- Hibernate二级缓存的数据缓存到磁盘上
- Spring配置DataSource时数据库用户名设置名称要注意
- CentOS7.2更改yum源与更新系统
- SQLite
- java 事务的注解
- 指针和数组——面试基础(1)
- #js 限制上传文件的大小
- 黑客工具之DET——可扩展的数据渗出工具包
- 查看域名指向
- 微信应用号抢先玩一一小程序
- orcale误删数据后怎么恢复
- php 发起 post http请求 ,并传body内容 到另一个php页面
- IntelliJ IDEA 快捷键和设置
- windows系统和Linux系统下文件路径"\" 和 “/”