c语言行指针 列指针,行指针列指针

这篇博客详细探讨了C++中指针与数组的关系,特别是行指针和列指针的概念。通过示例代码解释了如何正确地将指针与一维和二维数组关联,并讨论了不同类型的指针赋值可能导致的错误。文章还涵盖了sizeof运算符在数组和指针上的应用,帮助读者深入理解内存布局。
摘要由CSDN通过智能技术生成

#include using namespace std;int main(){int s1[3];int (*p1)[3] = s1; // error, s1为列指针,p1为数组指针,这里理解为行指针int (*p2)[3] = &s1; // ok, 列指针取地址即为行指针int *p3 = s1; // okint s2[3][4];int (*p4)[3][4] = s2; // error, s2理解为为行指针,即int (*)[4],指向一个一维数组, p4指向的是一个二维数组int (*p5)[3][4] = &s2;// ok, 取数组的地址赋给数组的指针int (*p6)[4] = s2; // ok, 见14行int (*p7)[4] = s2[0]; // error, s2[0]有两个含义,1,一个一维数组的数组名,2.一个列指针,即int*, 指向数组的第一行第一列int *p8 = s2[0]; // ok, p9指向第一行的第一个元素int *p9 = s2[0] + 1; // ok, p9指向第一行的第二个元素cout << sizeof(s1) << endl; // 12, 数组名cout << sizeof(s1[0]) << endl; // 4, intcout << sizeof(s2[0]) << endl; // 16, 数组名 (也有列指针的含义)cout << sizeof(s2[0] + 1) << endl; // 4, 列指针cout << sizeof(s2) << endl; // 48, 数组名return 0;}

见 http://jiangyiblog.net/archives/148

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值