char (*p3)[5] = a; 和char (*p4)[5] = a;的区别?
char (*p3)[5] = &a; 和char (*p4)[5] = a;的区别?
例1:
int main()
{
char a[5]={'A','B','C','D'};
char (*p3)[5] = &a;
char (*p4)[5] = a;
return 0;
}
例2:
int main()
{
char a[5]={'A','B','C','D'};
char (*p3)[3] = &a;
char (*p4)[3] = a;
return 0;
}
例3:
int main()
{
char a[5]={'A','B','C','D'};
char (*p3)[10] = &a;
char (*p4)[10] = a; return 0;
}
上面对p3 和p4 的使用,哪个正确呢?p3+1 的值会是什么?p4+1 的值又会是什么?
答案:
对例1来说:
(1)p3 和p4 都是数组指针,指向的是整个数组。
(2)&a 是整个数组的首地址,a是数组首元素的首地址,其值相同但意义不同。
(3)在C 语言里,赋值符号“=”号两边的数据类型必须是相同的,如果不同需要显示或隐式的类型转换。
(4)p3 这个定义的“=”号两边的数据类型完全一致,而p4 这个定义的“=”号两边的数据类型就不一致了。左边的类型是指向整个数组的指针,右边的数据类型是指向单个字符的指针。
(5)在Visual C++6.0 上给出警告,还好,这里虽然给出了警告,但由于&a 和a 的值一样,而变量作为右值时编译器只是取变量的值,所以运行并没有什么问题。不过我仍然警告你别这么用。
(6)既然现在清楚了p3 和p4 都是指向整个数组的,那p3+1 和p4+1 的值就很好理解了。
例2,3大家在评论里讨论。
char (*p3)[5] = a; 和char (*p4)[5] = a;的区别?相关推荐
- linux wchar t char,linux 下 Linux 下char转换为wchar_t
LInux下使用mbstowcs函数可以将char转化为wchar_t 函数含义:convert a multibyte string to a wide char string 说明: ...
- linux strcpy 用法,由Linux中管道的buffer,浅谈C语言中char类型字符串拷贝使用strcpy()和=赋值符号的区别...
今天在写父子进程用两个单向管道通信时,出现了错误: Segmentation fault (core dumped) 打开core文件发现: 附上源码: 1 #include 2 #include 3 ...
- oracle中的char和j,oracle中char与varchar2的区别
1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),在数据 ...
- const char* p 、char* const p、const (char*) p 理解记忆
网上查找了很多理解记忆的方式,总结几个对自己理解很有帮助的原则: 1:从右至左理解(应该和c++的语言特性有关) 2:const修饰最近的一个单词,'*'除外.(还有一种理解const在'*'左,修饰 ...
- 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
[在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别 ] 1.CHAR(size)和VARCHAR(size)的区别 CHAR为定长的字段,最 ...
- java char 空字符串_java判断char是否为空的方法
java判断char是否为空的方法 发布时间:2020-06-23 11:47:02 来源:亿速云 阅读:173 作者:Leah 这篇文章将为大家详细讲解有关java判断char是否为空的方法,文章内 ...
- c语言 char *b,C语言:char*a,*b; *b*=a是什么意思? 如图所示
满意答案 scd921168 推荐于 2016.05.25 采纳率:52% 等级:12 已帮助:7261人 *b*=a 等效于 *b = (*b) * a a的值是a的ascii 十进制 字符 ...
- “const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法
"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法 参考文章: (1)"const char *" ...
- c语言中char * string,浅析string 与char* char[]之间的转换
1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...
最新文章
- 通用软件测试的6个角度
- 如何安装altium designer 10
- eth0,eth1,eth2,lo是什么
- UNICODE与多字节字符集等字符问题
- c malloc 头文件_干货笔记 | C/C++笔试面试详细总结(二)
- 走访近20家代工厂后:近千块的大牌T恤,成本只要几十块
- 15个创意示例教您如何自定义 404 错误页面
- 吴恩达团队最新成果:用深度学习预测死亡概率,改善临终关怀
- sqlserver2014导出mysql_sql server2014如何备份数据库-sql server2014备份数据库教程 - 河东软件园...
- 浅谈大学综合能源服务
- 【经典书】机器学习导论(附PDF)
- 2021-02-18
- 计算机主机结构讲解,电脑内部结构图和讲解
- 计算机二级ms模拟题在线,全国计算机二级MSoffice高级应用模拟试题及答案
- 初识STM32---基于STM32的室内温湿度检测
- (arduino基于W5100实现TCP客户端
- vue——axios请求成功却进入catch的原因
- 周长为定长的所有平面四边形P中,面积最大的为正方形。
- mysql导出备份、导入恢复以及迁移(适用虚拟主机)
- 治疗腰椎间盘突出特效方