百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

C/C++编程笔记:C数组、字符串常量和指针!三分钟弄懂它

bigegpt 2024-10-16 07:54 1 浏览

想弄懂C语言中数组和指针的关系吗?这篇文章就占据你三分钟时间,看完你肯定会有收获!


数组

数组声明为 数据类型 名称[ constant-size ],并将一个数据类型的一个或多个实例分组到一个可寻址的位置

constant-size可能是一个表达式,但是该表达式必须求值为常量,例如:

#定义MAX_SIZE 16

...

int列表[MAX_SIZE + 1];

C数组开始于元素0,所以像阵列定义 int a[3];将创建三个int软件,可寻址如a[0],a[1],和a[2]

请注意,即使定义很难说a[3],也没有名为a[3]

与其他变量一样,全局和静态数组元素默认情况下初始化为0,并且自动数组元素填充有垃圾值

可以使用大括号中的一个或多个值来初始化数组,例如:

int a[3] = {5, -2, 17};

ANSI C之前的编译器可能不允许在自动数组上进行初始化

如果存在初始化值列表,但未 指定常量大小,则数组的大小与初始化值的数目相同

int q[] = {1, 2, 3}; 是相同的

int q[3] = {1, 2, 3};

要声明对另一个文件中定义的数组的外部引用,请使用extern int a[];


字符串常量

在C语言中,类型数组char用于表示字符串,字符串的结尾由设置为0的字节标记(也称为NUL字符)

以下定义都将其数组设置为相同的值:

int str1 [] = {'a','b','c','\ 0'};

int str2 [] =“ abc”;

ANSI C还允许定义像int str[3] = "abc"; ,其是相同的int str[3] = {'a', 'b', 'c'}; (省略了最终NUL字符)


多维数组

多维数组只是数组的数组(数组的数组...)

类似的多维数组m[3][2]存储在连续的存储位置中,例如m [0] [0],m [0] [1],m [1] [0],m [1] [1],m [2] [0] ,m [2] [1]


指针

指针是包含变量地址的变量

有两个与指针关联的运算符:

该&操作符返回其参数的地址

该*引用它的参数通过指针访问对象指针

指针的一个简单示例是:

int i,j;

int * p; / *指向'int'的指针* /

我= 6;

p =&i; / *将`p'设置为`i'的地址* /

j = * p; / *将'j'设置为6('i'的值)* /

* p = 5; / *将'i'设置为5 * /

指针可以包含一个地址或一个称为空指针的特殊值,该值不同于所有有效指针

指针上下文中的0将在编译时转换为空指针

还有一个预处理器宏NULL(在<stdio.h>或中 定义 <stdlib.h>)

像expression这样的表达式将导致 语句是否为空指针,因为它与相同, 并且由于在指针上下文中将其转换为空指针,因此代码将与空指针 进行隐式比较if (!ptr) statementptrif (ptr)if (ptr == 0)0ptr

同样,将评估声明,如果是不是一个空指针 if (ptr) statementptr

指针不能指向:

常数(像3,不const类似s const int a;)由于值3不具有永久的存储器地址

register 变量,因为寄存器不在内存中,因此没有内存地址

类似的表达式(8 * k),它们与常量大致相同,因为它们没有永久的内存地址


指针和数组

指针可以视为数组

这段代码:

int main(void){

int a [3] = {6,3,7};

int * p =&a [0]; / *将`p'指向`a'的第一个元素* /

if(a [0] == p [0] && a [1] == p [1] && a [2] == p [2])

return 1;

else

return 0;

}

将返回1,因为指向 n的所有有效值p[n]a[n]

指针是没有,不过,同为数组

这是C语言最令人困惑的部分之一,因此这里有三种不同的方式来说明数组a 与指向p第一个元素的指针之间的区别a :

技术说明:使用直接寻址访问数组,使用间接寻址访问指针

较少技术的解释:a是一个地址, p是一个保存以下地址的地址a

极其罗嗦解释:检索值从 ,在计算机启动时的地址,移动?过去,并获取价值从那里; 要从中检索值,计算机将从地址开始,获取存储在其中的地址并向其添加n,然后从结果地址中 获取值a[n]ap[n]p

但是,在大多数情况下,指针和数组访问可被视为具有相同的作用,主要的例外是:

1)sizeof 运算符

sizeof(array) 返回所有元素中使用的内存量 array

sizeof(pointer)仅返回pointer变量本身使用的内存量

2)&运算符

&array是的别名,&array[0]并返回中第一个元素的地址array

&pointer 返回的地址 pointer

3)字符数组的字符串文字初始化

char array[] = "abc"将前四个元素设置 array为'a','b','c'和'\ 0'

char *pointer = "abc"设置pointer为“ abc”字符串的地址(可能存储在只读存储器中,因此不可更改)

此外,无法调整数组大小或重新分配数组。


另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

编程学习书籍分享:


编程学习视频分享:

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长~

相关推荐

科氪 | 华硕天选6系列正式发布,搭载满功耗RTX 5060实际到手5999元起

5月19日晚,华硕旗下潮玩新次元游戏本天选6系列正式发布。作为Z世代青年的潮酷游戏装备,天选6系列再一次印证了其出色的综合实力。搭载满功耗RTX5060笔记本电脑GPU的天选6Pro以及天选6皆...

最新历史最低价显卡汇总!低端高端一网打尽

文|宋金戈责编|吕东兴总编|唐迪近期开展的618大促,各个品类尤其是数码科技好物的产品优惠都诚意满满,而作为消费者最关心的大类之一,显卡在最近同样表现不俗——华硕、技嘉等多个品牌,从1660s...

DNF:南山必胜客“败诉”,TX被DD373实锤,谁说玩家只有使用权?

TX和DD373的官司终于落下帷幕,南山必胜客终于中断了传奇。TX这一次被判定败诉。其中关于游戏账号和虚拟财产的问题,最受玩家关注。之前TX所说的:游戏账号不是玩家私有财产,游戏币更不是,只有使用权!...

Switch最新SX OS破解系统发布:可运行国行卡带xci镜像了

本周,TX团队(Team-Xecuter)发布了SXOS自制系统的最新版本,v2.9.5Beta,该版本支持了任天堂最新的V10.0.0和v10.0.1固件,同时改善了兼容性,优化了本地联机的稳定...

神舟战神TX8R5 QHD游戏本电脑今晚开售:2.5K屏+RTX4060,6999元

IT之家4月9日消息,神舟战神TX8R5QHD游戏本电脑今晚12点正式开售,仅有16GB+512GB一个版本可选,售价6999元。神舟战神TX8R5QHD搭载13代酷...

开创第三代手游商业模式《武极天下》推无商城玩法

翻阅游戏论坛与贴吧,大家对网络游戏的一些“坑爹”的设定抱怨不已,不是游戏职业设定不合理,就是游戏太烧钱,在游戏中被碾压的抬不起头,最后从玩游戏变成了被游戏玩,俨然游戏本质完全变味。由巨人移动自主研发并...

真满血Gen5电竞存储神装!佰维X570 Pro天启高速固态硬盘测评

2025一开年,对于存储行业来说,就是速度狂飙的开局。各固态硬盘品牌PCIe5.0SSD纷纷亮相,开启了新一轮的性能PK。在2024年异常活跃的佰维科技,也于CES期间推出了佰维X570PRO...

Kingston FURY Renegade G5评测 最速PCIe5.0固态硬盘诞生

【ZOL中关村在线原创评测】说起KingstonFURYRenegade叛逆者的大名,相信PCDIY玩家都知道这是金士顿高端存储的代名词,尤其是内存产品给人印象尤为深刻。实际上它还有固态硬盘系列...

《武极天下》力挺苹果TestFlight创业界先河

关于革旧鼎新,有人说就像是摸石头过河,在摸索中前行。一场正真的创新改革会带来什么?在数字行业,苹果公司的每一个产品都代表着一个时代的开启,它独立的操作系统、顺应用户需求的体验设计,在十几年时间内收获了...

闪迪至尊超极速移动固态硬盘USB4版评测 超越SSD的三防猛兽

移动固态硬盘,凭借TB级的容量和远超传统移动机械硬盘几倍、十几倍的速度,当仁不让地成为高效移动存储的代名词,为4K/8K超高清内容创作、海量文件备份带来了超乎想象的效率提升。国际知名品牌SanDisk...

RTX5070笔记本有哪些:游戏笔记本电脑哪个牌子好?

RTX5070游戏本,个人其实不是很喜欢,对于新款显卡,要不就考虑RTX5060,要不就考虑12GB显存的RTX5070Ti这样好一些,从RTX5070显卡的游戏本的量,也能看出来,估计5060会更多...

破军天下安装指南详解 游戏安装方法介绍

破军天下游戏怎么正确安装?破军天下安装方法是什么?对于破军天下中的安装问题,今天安趣网小编就为各位玩家小伙伴来好好的讲解下,让我们一起来看看,破军天下怎么正确安装游戏的吧!希望大家喜欢!安卓系统(An...

从高性能轻薄本到硬核电竞本 华硕天选新品解锁全场景体验

来源:环球网【环球网科技综合报道】5月19日,华硕天选多款笔记本新品正式发布。其中,14英寸轻薄全能本标杆华硕天选Air2025正式发布,显卡升级至GeForceRTX5060笔记本电脑GPU...

笔记本无线网卡有哪几种 有必要对其升级吗?

无线网卡是很多朋友购买笔记本时容易忽视的部分,相比较处理器、内存、显卡和硬盘,无线网卡几乎不可选,而且很少有厂商提到自家产品采用的无线网卡型号。大家可能遇到过这种情况:为什么手机可以连接到5Ghz,而...

下班了才发现,你的手机里藏着5个定时炸弹!

各位打工人累了一天终于可以躺平刷手机了吧?且慢!工信部最新通知,有些App比加班还可怕!它们可能正在偷偷收集你的信息,比你的老板还要了解你!今天就让我们一起来扒一扒这些“职场内鬼“,看看你的手机里有没...