指针和二位数组

    int a[3][4] = { 0, 1,2,3,4,5,6,7,8,9,11,12};

    printf("\n%d,%d", a,*a); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(a), sizeof(*a)); // 48 16

    printf("\n%d,%d", a[0],*(a+0)); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(a[0]), sizeof(*(a+0))); //16 16

    printf("\n%d,%d", &a[0],&a[0][0]); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(a[0]), sizeof(a[0][0])); // 16 4

    printf("\n%d,%d", a[1],a+1); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(a[1]), sizeof(a+1)); // 16 4

    printf("\n%d,%d", &a[1][0],*(a+1)+0); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(&a[1][0]), sizeof(*(a+1))); //4,16

    printf("\n%d,%d", a[2],*(a+2)); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(a[2]), sizeof(*(a+2))); // 16 16

    printf("\n%d,%d", &a[2],(a+2)); //两个一样的16进制地址
    printf("\n%d,%d", sizeof(&a[2]), sizeof(a+2)); //4 4

    printf("\n%d,%d", a[1][0],*(*(a+1)+0));//5 5
    printf("\n%d,%d", *a[2],*(*(a+2)+0)); // 8 8
    getchar();
时间: 2024-10-11 00:12:06

指针和二位数组的相关文章

二级指针与二维数组

最近看<Linux C程序设计大全>这本书,虽然书中有一些错误,但整体来说,书写得还算可以. 当看到网络编程[第23.2.4小节 获得主机信息]时,遇到了一段代码,原文如下: “一台主机有许多和网络相关的信息,例如,主机名称.IP地址.主机提供的服务等.这些信息一般都保存在系统中的某个文件里(例如/etc/hosts等),用户程序可以通过系统提供的函数读取这些文件上的内容.Linux环境下使用gethostent函数读取和主机有关的信息,该函数的原型如下: 1 #include <net

C语言数组篇(五)多级指针和二维数组指针的区别

多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[10] --> 10个空间的数组 * p[10] --> 这10个空间的数组里面存放的数据都是 指针型的数据 int *p[10] --> 数组里面每个指针指向的空间存放的是int型的数据 int *p[10] --> int **p; p: 指针数组的数组名,也是数组的首地址. *p 数组里面存放的指针 **p 数组里面存放的指针 指向的空间 的内容 二维数组指针: 二维数

二位数组传参及二位数组动态分配问题

//二位数组参数传递 //1. void display1(int arr[][4], const int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 4; j++) { cout << arr[i][j] << ' '; } cout << endl; } cout << endl; } //2. void display2(int(*parr)[4], const

C++ 出现bug :二位数组的操作运算,求非对角线的元素的和

编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能 #include<iostream> using namespace std; class MATRIX { public: void mATRIX(); void MATRIX_sum(); void MATRIX_display(); static int fact_len;//定义静态变量 private: int sum; int a[40][40]; }; int MATRIX

在控制台输入字母然后在控制台打印相应的二位数组字母,要求一行打印

1 package MyHomeWork; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Scanner; 6 7 /** 8 * Created by zhouyubin on 7/11/14. 9 */ 10 public class Test2 { 11 private static final char[][] print_a={{' ',' ',' ','A',' ',' ',' ','

二位数组环状最大子矩阵

由于上次二位数组,使用了函数,所以这次只要修改函数就可以了. //Powered by lzr! #include<iostream> using namespace std; int yiwei_max(int n,int a[]) { int temp=0,sum=-999999999; int j=0,k=0,i; for(i=0;i<n;i++) { if(temp>0) { temp+=a[i]; } else { temp=a[i]; if(a[i]>0 &

指针与二维数组间的关系

1.四种表示a[i][j]的形式是等价的: a[i][j]==*(a[i]+j)==*(*(a+i)+j)==(*(a+i))[j] 2.通过行指针p引用二维数组a的元素a[i][j]的方法可用以下4种等价形式: p[i][j]==*(p[i]+j)==*(*(p+i)+j)==(*(p+i))[j] 3.对指向二维数组的行指针p进行初始化的方法: p=a 或p=&a[0] 4.对指向二维数组的列指针进行初始化的方法(以下三种方法等价): p=a[0] 或 p=*a 或 p=&a[0][0

二位数组中的查找——杨氏矩阵

------------------------------------------------------------------------------------------------- "杨氏矩阵":即数组元素从左向右依次递增,从上到下依次递增.要想在该数组中查找数,首 先该数组得满足"杨氏矩阵"的特点.为了方便理解我们可以将一个二位数组看作是一个矩阵,假设i 为行,j为列,数组为str,那么只要满足(str[i][j]<str[i][j+1] &a

例看二维数组,指针,二维数组指针

例程: /****************************************************** * * 文件名:例程 * * 文件描述:例看二维数组,指针,二维数组指针 * * 创建人:Jesse * * 版本号: * * 修改记录: * ******************************************************/ #include <stdio.h> #define ROW 3 #define LINE 3 void main(voi