博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针和二维数组
阅读量:6545 次
发布时间:2019-06-24

本文共 1387 字,大约阅读时间需要 4 分钟。

  hot3.png

先看代码:
#include "stdio.h"void testVect0(int a[][2]){	printf(" a[3][1] = %d \n\n", a[3][1]) ;}void testVect1(int (*p)[2]){	printf("p[3][1] = %d  \n\n", p[3][1]) ; 	printf("*(*(p+3)+1)) = %d  \n\n", *(*(p+3)+1)); }void testVect2(int **pp){	printf("*(*pp+7) = %d \n\n", *(*pp+7) );}int main(){	int a [6][2] = {
{1,2}, {3,4}, {5,6},{7,8},{9,10},{11,12}} ; int (*p) [2] ; //指向2个int数组的指针 p = a ; int **pp ; int *q = a[0] ; pp = &q ; testVect0(a); testVect1(p) ; testVect2(pp) ; return 0 ;}
结果:
a[3][1] = 8p[3][1] = 8*(*(p+3)+1)) = 8*(*pp+7) = 8
  另外:
#include "stdafx.h" #include 
using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int arr1[3]; int arr2[3]; int arr3[3]; int * ptr; // ptr1是一个指向 int [3] 的指针,即ptr的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长 int ptr1[3][3]={
{1,2,3},{1,2,3},{1,2,3}}; // ptr2是一个指向 int * 的指针,即ptr2的类型和&ptr是一样的,注意:ptr指向的内存区域不定长 int * ptr2[3]={arr1,arr2,arr3}; // ptr3是一个指向 int [3] 的指针,即ptr3的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长 int(* ptr3)[3]=&arr1; ptr3=ptr1; // 没错,他们的类型相同 // ptr3=ptr2;//error 无法从“int *[3]”转换为“int (*)[3] // ptr4是一个指向 int * 的指针,即ptr4的类型和&ptr是一样的,注意:ptr指向的内存区域不定长 int ** ptr4; //ptr4=&arr1; //error 无法从“int (*)[3]”转换为“int ** ptr4=ptr2; // 没错,他们的类型相同 //ptr4=ptr3; // error 无法从“int (*)[3]”转换为“int ** return 0; }
参考: [1].  [2] .

转载于:https://my.oschina.net/itfanr/blog/195605

你可能感兴趣的文章
Log4j_学习_00_资源帖
查看>>
制作iso镜像U盘自动化安装linux系统
查看>>
JSLint的使用
查看>>
命令行常用命令--软连接
查看>>
HTTP POST GET 本质区别详解
查看>>
MD5加密
查看>>
ant
查看>>
微信,想要说爱你,却没有那么容易!
查看>>
有关sqlite与sql
查看>>
MapXtreme 2005 学习心得 概述(一)
查看>>
php进一法取整、四舍五入取整、忽略小数等的取整数方法大全
查看>>
Hibernate的拦截器和监听器
查看>>
游戏中学习Bash技能
查看>>
ubuntu 12.04系统托盘不显示ibus输入法图标的解决方法
查看>>
WSDP
查看>>
Memory Management
查看>>
The Packaging Process in Yocto/OE
查看>>
JQUERY 对 表格中的数据重排序
查看>>
程序员常用借口指南
查看>>
关于PXE网络安装linux系统中碰到的个别问题
查看>>