C++数组名

本文探讨了C++中数组名的概念,强调它既是数据结构的代表,也可转换为指向数组的指针常量。当数组名作为函数参数时,其行为等同于普通指针,失去了数据结构的含义,只表示数组起始地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


原文:https://www.cnblogs.com/fenghuan/p/4775023.html

1.概述

(1)数组名的内涵在于数组名指代一种数据结构:数组
(2)数组名有时可以转换为指向该数组的指针常量
(3)数组名可能失去其数据结构内涵 ,数组名作为函数形参时,全面沦落为一个普通指针
(4) 指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址(数组的地址就是第一个元素的地址)!

2.数组名的内涵:数组
#include <iostream>
using namespace std;
int main()
{
	char str[10];
	char* pStr = str;
	cout << "sizeof(str): \t" << sizeof(str) << endl;
	cout << "sizeof(pStr): \t" << sizeof(pStr) << endl;
	system("pause");
	return 0;
}


说明:数组名str的内涵为一种数据结构,即一个长度为10的char型数组,所以sizeof(str)的结果为这个数据结构占据的内存大小:10字节。

3.数组名可转换为指针常量

数组名可以转换为指向其指代实体的指针,但它只能被看作一个指针常量,不能被修改。

#include<iostream>
using namespace std;
int main()
{
	int arr_int[10];
	for (int i = 0; i < 9; i++) { arr_int[i] = i; }

	//数组名的可转换为指向其指代实体的指针(指针常量),即指向数组的指针
	cout << "arr_int: " << arr_int << endl;

	//取一个数组名的地址所产生的是一个指向数组的指针(相当于取数组存放的地址)
	cout << "&arr_int: " << &arr_int << endl;

    cout << "&(arr_int[0]): " << &(arr_int[0]) << endl;//证明数组的地址即为第一个元素的地址
	cout << "&(arr_int[1]): " << &(arr_int[1]) << endl;
	system("pause");
}

在这里插入图片描述

4.数组名作为函数形参时,相当于普通指针
#include <iostream>
using namespace std;
void arrayTest(char str[])//数组名做参数,不能改为char* str
{
	cout << "sizeof(str):" << sizeof(str) << endl;
}
int main()
{
	char str1[10] = "I love U.";
	arrayTest(str1);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值