社区
C++ 语言
帖子详情
数组和指针
cg05568256068
2009-04-22 05:17:46
请教大家一个问题:c语言中指针和数组在编译时的区别 例如:int a[10]和int *b,a[5]和b+5 在编译的时候区别是什么
...全文
106
5
打赏
收藏
数组和指针
请教大家一个问题:c语言中指针和数组在编译时的区别 例如:int a[10]和int *b,a[5]和b+5 在编译的时候区别是什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cg05568256068
2009-04-22
打赏
举报
回复
[Quote=引用 4 楼 lingyin55 的回复:]
C专家编程里解释的很好:
经典的错误:在一个文件定义了数组,却在另外一个文件声明其为指针。代码如下:
/*File name: main.c*/
extern int* array; /*声明指针*/
int main(void)
{
array[0]=1; /*用指针访问数据*/
return 0;
}
/*File name: def.c*/
int array[5]={0}; /*定义的却是数组*/
1。编译器对数组名和指针变量的处理方式
编译器在编译时会产生一个符号表,记录了符号名和它的…
[/Quote]
太谢谢了!
lingyin55
2009-04-22
打赏
举报
回复
C专家编程里解释的很好:
经典的错误:在一个文件定义了数组,却在另外一个文件声明其为指针。代码如下:
/*File name: main.c*/
extern int* array; /*声明指针*/
int main(void)
{
array[0]=1; /*用指针访问数据*/
return 0;
}
/*File name: def.c*/
int array[5]={0}; /*定义的却是数组*/
1。编译器对数组名和指针变量的处理方式
编译器在编译时会产生一个符号表,记录了符号名和它的地址。对于指针变量,这显然很好理解。而数组名就不那么明显了,它仅仅是一个符号而已,何来地址?编译器是这样处理的,它记录了array[0]的地址;这和我们通常的理解也是一样的。
2。带下标形式的数组和指针寻址方式
(1)数组情形
char a[9]="abcdefgh";
...
c=a[i];
在编译期,会在符号表中创建这样一条记录:
name:a address:9980
要获取a[i]的值分两个步骤:
step 1:取得i的值并和9980相加
step 2:在内存地址(9980+i)处取其内容
(2)指针情形
char* p="abcdefgh";
...
c=p[i];
在编译期,会在符号表中创建这样一条记录:
name:p address:4624
要获取p[i]的值分三个步骤:
step 1:在内存地址4624处取其内容,比如说“5081”
step 2:取得i的值并和5081相加
step 3:在内存地址(5081+i)取其内容
jame2001
2009-04-22
打赏
举报
回复
你可以用汇编语言來看编译器如何實作...
影子LEON
2009-04-22
打赏
举报
回复
int a[10]和int *b
如果b=a的话
a[5]则是第六个元素
b+5则是第六个元素的地址
*(b+5)则是第六个元素
jackyjkchen
2009-04-22
打赏
举报
回复
int a[10]和int *b
这两个是有区别的,一个预分配了栈内存空间,一个是未初始化的野指针,没有指向任何合法空间。
a[5]和b+5
这两个区别倒不大,数则也可以用后者定位,指针也可以用前者定位,一些老的C语言教材推荐后者,但是实际上编译效率是一样的
指针
进阶之
数组
指针
和
指针
数组
本文详细介绍了
指针
数组
和
数组
指针
的概念,包括它们的定义、用法以及在实际编程中的应用。通过案例分析展示了如何使用
指针
数组
存储变量地址以及如何通过
数组
指针
管理多个
数组
。此外,文章还对比了
数组
名与
数组
地址的区别,并提供了不同方式遍历和访问
数组
元素的示例。
指针
数组
和
数组
指针
(非常易懂)
本文详细探讨了C语言中
指针
与
数组
的关系,包括
指针
与一维
数组
、
指针
与二维
数组
以及
数组
指针
与
指针
数组
的概念。解释了如何通过
指针
访问和操作
数组
,特别强调了
指针
在二维
数组
中的应用,以及
数组
指针
(行
指针
)和
指针
数组
的区别。通过对不同情况的示例解析,帮助读者理解
指针
在
数组
操作中的核心作用。
指针
数组
和
数组
指针
的区别和用处
文章详细阐述了
指针
数组
和
数组
指针
的概念,包括它们的定义、初始化、访问方式以及与二维
数组
的关系。
指针
数组
是一个包含多个
指针
的
数组
,而
数组
指针
是一个指向
数组
的
指针
。通过示例代码,解释了如何对两者进行赋值和访问元素,强调了理解优先级在解析这两种类型时的重要性。
【C语言】
指针
数组
和
数组
指针
的区别
本文主要介绍了C语言中
指针
数组
和
数组
指针
的区别。
指针
数组
是
指针
类型的
数组
,
数组
元素为
指针
;
数组
指针
是指向整个
数组
的
指针
。文章还阐述了二者的内存布局,以及
数组
指针
和取地址时a和&a的区别,帮助读者深入理解这两个概念。
指针
数组
和
数组
指针
本文详细解释了
指针
的基础概念,包括内存地址、
指针
作为变量保存地址的本质,以及
指针
步长的类型依赖。还介绍了
数组
指针
和
指针
数组
的区别,以及它们在
数组
操作中的应用,包括优先级运算规则和示例代码演示。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章