二維陣列名與地址的對應
已知int a[3][4];
則下列能表示a[1][2]
元素值的是?
- 在多維陣列中,陣列名是第一個陣列的地址.
- 注意這裡a不是第一個元素的地址,而是第一個維陣列(即
a[0],a[0]是一個4元素的陣列
)的地址,a[0][0]
才是表示的一維陣列第一個元素的地址. - 陣列名 + 1表示向下移一層.
本題中,
a
是一個三行四列的陣列
*(a+1)表示第二行的首地址,和a[1]一樣。
*(a+1)+2第二行第三個數字的地址
((a+1)+2)就是第二行第三個數字的值
其它答案:
a
是一個二級指標,不是一級指標,*(a+1)
表示的第二個陣列的地址*(a+1+2)
等於*(a+3)
int *
, 表示的是 第4個數組a[3]
的地址,而**(a+3)
表示a[3][0]
的值,
*((int *)(a+3))
也可以表示a[3][0]
的值(&a[0]+1)
表示的是第2個數組a[1]
的地址,(&a[0]+1)[2]
其實是陣列a[3]
的地址,改成((int *)(&a[0]+1))[2]
才是對的*(a[0]+1)
是a[0][1]
的值
相關推薦
二維陣列名與地址的對應
已知int a[3][4];則下列能表示a[1][2]元素值的是? 在多維陣列中,陣列名是第一個陣列的地址. 注意這裡a不是第一個元素的地址,而是第一個維陣列(即a[0],a[0]是一個4元素的陣列)的地址,a[0][0]才是表示的一維陣列第一個元素的地址.
C語言中二維陣列名與陣列地址、首行地址、首行首元素地址關係與區別詳解(初學者必須掌握)
C語言作為很多大學理工科都會學習的語言,作為一種程式設計入門語言。但是相對於其他高階程式語言來說相對是比較難,尤其是指針,不知道有多少莘莘學子都是因為它,從C語言入門到放棄。想當年,筆者在大一學習C語言
C/C++二維陣列名和二級指標
轉載自http://blog.csdn.net/wu_nan_nan/article/details/51741030 C/C++二維陣列名和二級指標 原創 2016年06月23日
二維陣列malloc與free
特別適用於C語言動態字串陣列操作 #include <stdio.h> typedef unsigned int wchar; #define LENGTH 10 //需求:字串陣列的二維陣列動態開闢 //name[n][LENGTH] 。。。。。。。。。
C#中二維陣列int[,]與交叉陣列int[][]的區別
首先說一下交叉陣列這個東西是C#裡面的,c++裡面是沒有的交叉陣列這個定義的 int[][] 是陣列的陣列,即一個一維陣列的每個元素都是一個數組,這個在C++,java等語言裡面也是這麼定義的; int[,]這個是C#中提供的一個二維陣列的形式,在C++中並不存在
二維陣列元素及其地址表示的完美解讀
一,二維陣列的架構與邏輯 1.a[3][4] = {a[0], a[1], a[2]} ={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 二維m×n --> m個一維陣列 --> 每個一維陣列包含n個元素
字元二維陣列char[][]與char**
在C程式碼中, 很容易在函式庫中見到類似如下函式原型的宣告: void f(char** str_list); 於是, 有的程式設計師就寫了如下的呼叫程式碼: #define SIZE 100 char a[SIZE][SIZE]; f(a); 這個時候可要小心了, 呼叫f
關於二維陣列名和指標的指標的問題
int a[2][3]; a的型別相當於 int (*)[3]而不是int ** int a[2][3]; int (*b)[3] = a; 這是可以的 但是int **c=a 是不可以的; 還有一種策略是 int *b[2]={a[0],a[1]};
2.Java陣列_一維陣列二維陣列的動態初始化與靜態初始化、方法接收/返回/修改陣列、java對陣列的排序/全拷貝/部分拷貝
Java陣列----引用資料型別,必須在使用前先初始化;否則會nullPointerException(執行時異常)。 (引用傳遞:多個棧記憶體指向同一塊堆記憶體) 1.一維陣列初始化 (1)動態初始化(宣告並開闢陣列) 資料型別[] 陣列名稱 = new 資料型別[長度]; 如
二維陣列的初始化與遍歷
這裡主要寫一些二維陣列的簡單總結,我對二維陣列的理解是:“數組裡面套陣列”;對比一下一維陣列,一維陣列中的元素是基本型別的數值或者是引用,那麼二維陣列的元素即為一維陣列,也就是陣列中套陣列。 &nbs
【C語言】一維陣列、二維陣列與指標
一維陣列和指標: 1、一維陣列名: 對於這樣的一維陣列:int a[4]; a作為陣列名就是我們陣列的首地址, a是一個地址常量 . 首先說說常量和變數的關係, 對於變數來說, 用箱子去比喻再好不過了, 宣告一個變數就宣告一個箱子,比如我們開闢出一個蘋果型別的箱子, 給這個變
SQL與eclipse的連線,從資料庫讀取表資料,將二維陣列資料匯入表
示例: import java.util.List; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; impor
關於javascript的陣列與二維陣列、關聯陣列
陣列: 什麼是:記憶體中連續儲存多個數據的記憶體空間 為什麼:便於批量管理和操作多個相關的資料 建立陣列: 有3種建立方法; (1)建立一個空陣列: var arr=[]; var arr=new Array(); (2)建立陣列時就初始化值:var arr=[45,
C語言中一維陣列與二維陣列
int arr [4] //定義了一個一維陣列,長度為4;說明以下三個分別是什麼型別; (1)arr //型別為int *,表示陣列元素首地址,即圖中箭頭指向的位置。 (2)arr+1 //型別為int *,表示陣列元素首地址+1,即圖中箭頭指向的位置。 (3)arr [0
java學習筆記:二維陣列與面向物件
目標: 二維陣列 面向物件程式設計 一、二維陣列 二維陣列就是一個元素為一維陣列的陣列。 格式1: 資料型別[][] 變數名 = new 資料型別[m][n]; m表示這個二維陣列有多少個一維陣列 n表示每一個數組的元素的元素個數 /*
一維陣列與二維陣列的一些區別
//【一維陣列】/*#include <stdio.h>void A(int arr[4]){ printf("%d\n",arr); printf("%d\n",arr + 1); printf("%d\n",arr[0]);}int main(){&nb
C語言之指標與二維陣列
指標,其實就是地址,可以指向一塊自己分配大小的空間。陣列即是多塊一位的空間的線性排布。二維陣列,雖然在人文定義的感覺上有了面的理解,但實際在記憶體中也是一維的線性空間。 對於討論二維陣列,首先我們應該先討論一維陣列與
指標7(指標與二維陣列)
先來道例題 #include<stdio.h> int main() {int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}}; int *p,i,j; p=&a[0][0]; printf("\n"); for
C ++ 指標 | 指標與二維陣列_5
指標與二維陣列 根據上面的圖,我現在寫一些語句,我們一起來判斷輸出值是多少!! int (*p)[3] = B; print B; 這個會列印多少? 思考一下。。。。。。。 。。。 。。。 。。。 列印: 400 print *B;
二維陣列求每名學生的總成績和平均成績(c++中字串的輸出)
#include “stdafx.h” #include #include //可以輸出字串 using namespace std; int main() { int scores[3][4]; cout << “請輸入同學姓名以及成績!”<