数组名做函数形参

数组未开辟空间时

#include <iostream>
using namespace std;
void test(int* a)
{*a = 0;*(a+1) = 1;*(a+2) = 2;cout<<a[0]<<a[1]<<a[2]<<endl;return;
}
int main(int argc,char* argv[])
{int* a;test(a);cout<<a[0]<<a[1]<<a[2]<<endl;return 0;
}

输出为空,因为a没有开辟内存。

开辟内存时

#include <iostream>
using namespace std;
void test(int* a)
{*a = 0;*(a+1) = 1;*(a+2) = 2;return;
}
int main(int argc,char* argv[])
{int* a = new int[10];test(a);cout<<a[0]<<a[1]<<a[2]<<endl;return 0;
}

输出为012,因为a开辟了内存。

指针

指针变量所占内存空间

指针自身也是一个变量类型,占8个字节。

#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{cout<<sizeof(int*)<<endl;cout<<sizeof(double*)<<endl;cout<<sizeof(char*)<<endl;
}

指针数组/数组指针

指针数组 int* a[5] 是一个数组,数组内部的变量为指针类型
数组指针 int (*a)[5] 是一个指针,指针指向数组类型变量

#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{// 指针数组int a = 1;int b = 2;int* a_ptr = &a;int* b_ptr = &b;int* type1[2] = {a_ptr,b_ptr};cout<<*type1[0]<<endl;// 数组指针int(*c)[2];int d[2] = {1,2};c = &d;cout<<*(*c+1);
}

C++数组名做函数形参/指针相关推荐

  1. Day17 指针变量做函数形参 指针函数 函数指针

    1. 指针变量做函数形参 1.1指针变量做一维数组形参 首先先了解如何定义一个一维数组指针 int arr[5] = {1, 2, 3, 4, 5};//定义一个一维数组 int *parr = ar ...

  2. c语言数组名做函数的参数传递,【C 语言】数组元素和数组名作为函数参数

    数组用作函数参数有两种形式: 一种是把数组元素(下标变量)作为实参使用: 一种是把数组名作为函数的形参和实参使用. 1.数组元素(下标变量)作为实参使用 数组元素作为函数实参使用与普通变量是完全相同的 ...

  3. 【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )

    文章目录 一.多维数组做函数形参退化为指针过程 1.使用 int array[2][3] 作函数参数 2.使用 int array[][3] 作函数参数 3.使用 int (*array)[3] 作函 ...

  4. 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量

    1.数组传参中形参的秘密 第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效. 第二十行:传递的是一个地址,是数组的首地址. 数组名代表了整个数组的首地址. 第二十一行:第一个元素的 ...

  5. 数组作为函数的参数传参时,数组名会退化为指针

    1.数组作为函数的参数传参时,数组名会退化为指针 数组作为函数的参数传参时,数组名会退化为指针,数值传参时,需要把数值的长度一起传过去,另外,sizeof()运算符包含字符串的哨兵'/0',而strl ...

  6. C语言-数组名真的不是指针

    文章目录 1 前言 2 关于一维数组 3 sizeof运算符和自增运算符 4 数组名也不是常量指针 5 总结 1 前言 参照我之前的两篇文章: 二维数组做函数的参数 动态创建二维数组 事实告诉我们,二 ...

  7. c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论

    取地址符&做函数形参? C语言强大且危险 引入 这个问题花去了整整一天的研究. 先看一段严蔚敏的<数据结构>中栈的例程: 这里面的&S第一遍看的时候想当然的认为是取了SqS ...

  8. 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...

    若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址. 数组首地址数组第一个元素的地址.数组名字本身就是一个指针,它是一个指针常量,指向的地址不变. 比如定义了一个数组变量,编译器就会在内 ...

  9. 剖析数组名、函数名(不是指针常量,更不是指针)

    对于一个数组,如 int a[4];  如果只是给出数组名a,编译器不知道该取该数组的第几个元素,因此编译器不会自动取值,而是返回该数组的首地址(第一个元素的地址).其实,数组名a就是数组本身,并不是 ...

最新文章

  1. JavaScript 变量
  2. 大数据引发的风险与管控
  3. 简述python程序结构_python架构的概念讲解
  4. ecshop 默认图处理
  5. ABPHelper.CLI及其依赖项简单介绍
  6. 程序员面试金典 - 面试题 05.07. 配对交换(位运算)
  7. php判断ipv6是否在范围内,[PHP] IPv6檢查IP是否在某個網段內 mtachcidr6
  8. gt1151触摸驱动调试
  9. java wmic_强大的命令行工具wmic
  10. SQL Server维护计划自动备份数据库
  11. PLC控制系统设计与调试的一般步骤
  12. CyanogenMod 和 Cyanogen OS 对比
  13. 安装net_speeder
  14. 4 数据校验和防碰撞
  15. 2020年拼多多校招面试题及答案-最全最新-持续更新中(2)
  16. 三星对韩国意味着什么?假如三星破产了,韩国会受到什么影响?
  17. 名编辑电子杂志大师教程 | 设置电子杂志的高宽比例
  18. Maximum length exceeded错误的解决办法
  19. 该爬破解验证码,爬企信宝必须破解滑块验证
  20. 【7 查找】二叉排序树查找关键字。

热门文章

  1. 2021-2027年中国市医疗电子场投资分析及前景预测报告
  2. c语言和c++字符串操作对比
  3. mybatis ResultMap
  4. sql移除数据中的换行符和回车符
  5. pytorch实现BiLSTM+CRF用于NER(命名实体识别)
  6. python究竟要不要使用多线程
  7. 机器翻译注意力机制及其PyTorch实现
  8. 开源软硬一体OpenCV AI Kit(OAK)
  9. 动态表单工作量给后端
  10. Nsight Compute Profilier 分析