array_name和&array_name的异同

本文详细解释了C语言中数组与指针的概念及其区别,包括如何正确地使用指针指向数组的第一个元素及整个数组,并通过示例代码展示了不同类型的指针声明与赋值方式。

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

前者是指向数组中第一个元素的指针,后者是指向整个数组的指针。
char a[MAX];        /*array of MAX characters*/
char *p = a;         /*p
为指向数组的指针*/
char *pa = &a;      /*
该语句是不正确的,pa的类型为'char *',而&a的类型为'char (*)[MAX]
*/
char (*pb)[MAX] = &a;       /*
该语句是正确的,pb的类型为
'char (*)[MAX]'*/

#include<stdio.h>

 

void main()

{

char a[5] = {'a','b','c','d','/0'};   

char *p = a;    

 

//运行下面这句后, vc6.0 提示的错误为:cannot convert from 'char (*)[5]' to 'char *'&a的类型应该是指向一个数组的指针

//char *pa = &a;

//所以,应该定义一个指向相同类型和大小的数组的指针来获得“&a”的值

char (*point_to_str)[5];

   point_to_str = &a;

 

 printf("%d/n%d/n",&p, &point_to_str);

 printf("%s/n%s/n", p,  point_to_str);

}

 

运行结果为:

1245044

1245040

abcd

abcd

 

我在左一个C语言判断的解析工具,希望能够正确识别输入代码中的局部变量,全局变量,调用函数,数组,结构体等,但是现在代码无法正确识别,请帮我修正。以下是解析结果: === 函数签名 === 函数名: Diag21_PID_C9 参数: U1 u1_a_num === 所有变量分析 === 类型 | 名称 | 作用域 | 行号 | 类别 ------------------------------------------------------------ 参数 | u1_a_num | 参数 | 1 | 基本类型 变量 | Diag21_PID_C9 | 全局 | 1 | 基本类型 变量 | u1_t_cmplt | 全局 | 1 | 基本类型 变量 | u1_t_cnt | 全局 | 4 | 基本类型 变量 | u2_array | 全局 | 6 | 基本类型 变量 | u1_t_swrstcnt | 全局 | 8 | 基本类型 变量 | u1_t_cnt | 全局 | 8 | 基本类型 变量 | sensor | 全局 | 5 | 基本类型 函数调用 | u1_g_InspSoftwareVersion | 调用 | 12 | 函数 函数调用 | vd_s_Diag21_U2ToU1 | 调用 | 14 | 函数 未找到局部变量 === 使用的全局变量 === 基本类型变量: Diag21_PID_C9 (行号: 1) u1_t_cmplt (行号: 1) u1_t_cnt (行号: 4) u1_t_swrstcnt (行号: 8) u1_t_cnt (行号: 8) sensor (行号: 5) 数组变量: u2_array[10][20] (行号: 6) === 函数调用 === 函数名: u1_g_InspSoftwareVersion (行号: 12) 返回类型: U1 参数: u4_g_cmd, &u4_g_data, (U1)TRUE -------------------------------------------------- 函数名: vd_s_Diag21_U2ToU1 (行号: 14) 返回类型: void 参数: u2_g_buf, u1_g_data, (U1)DIAG21_PIDC9_FLAG -------------------------------------------------- === 解析统计 === 参数数量: 1 局部变量数量: 0 全局变量数量: 7 函数调用数量: 2 结构体变量数量: 0 总变量数量: 10
07-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值