1樓:周域
假如有乙個二維陣列。
a[ i][ j]和乙個指標*p;
一。如果用列指標定義,即p=*a或p=a[ 0],要取第一列,用乙個迴圈for(;p<=p+j;p++)取值即*p;
二。如果用行指標定義,即(*p)(j),若這樣定義,取第一列元素時,用乙個for迴圈。
即。for(m=0;m c語言中如何取二維陣列的一行(一列)? 2樓:網友 沒有簡單的函式或表示方法,只能使用迴圈輸出或者使用陣列中的值。62616964757a686964616fe59b9ee7ad9431333431353431 #include int main() int b[3],n=3; printf("輸出第三行: "); for(int i=0;i<3;i++) 陣列b中儲存的就是第n行的資料。 3樓:網友 1、用fgets函式可以讀取檔案中某行的資料,某列資料就必須乙個內乙個讀入每行的第幾個字元,再存容入到乙個字串當中。 2、例程:#include #include void main() b[k]=0; printf("第%d行資料:%s",i,a); printf("第%d列資料:%s",j,b); fclose(fp);} 二維陣列a的「列指標」與「行指標」有什麼聯絡 4樓:king離歌無言 1.行指標與列指標區別是否是+1上的不同,例如a[0]+1是指a[0][1]的位址。 而&a[0]+1是指a[1][0]的位址!除了上面還有其他的行指標與列指標表示方法嗎?只要有其功能就可! 本質上不存在任何區別,n維陣列的儲存空間都是連續的,只不靜態宣告陣列時,編譯器幫你生成了根據下表訪問特定元素的**,如a[3][3],使用a[1][2]則編譯器幫你生成*(a+(3*1)+2)的指標訪問**,所以對於二維陣列,設n,m分別為其。 一、二維,行指標:a+(n*行數),列指標:a+列數,在該位置的元素:a+(n*行數)+列數,不過用這種思維來理解陣列欠妥,特別是維數多的時候。 2.**a,*a[0]是否別代表a[0][0]這個元素,是否就代表a可以當作指標,還是有其他的。 區別!能講一點也好? 不代表,a本身就是指標,而且是個值不能改變的指標,除非陣列的元素是指標或多階指標。 3.正如上面所說,a,a[0],&a[0][0]是指同乙個位址,除了上述+1區別,還有麼?(可以從用法或其他方面說) 轉變思維方法,陣列是線性儲存,就線性地去理解它。 4.陣列a[3][3],為何這個不可以for(i=0;i<9;i++) scanf("%d",a++) 而 for(i=0;i<9;i++) scanf("%d",a+i);可以呢? 區別在哪?—a是個不能改變值得指標,所以a++肯定是錯的。 5樓:網友 沒有所謂的列指標與行指標。只有列下標與行下標,一級指標、二級指標。其實,二維陣列在記憶體中也是順序存放的。 從首位址開始,計算偏移就能遍歷整個陣列。a[i][j]中,列下標與行下標可以方便表示偏移而已。 6樓:網友 沒有「列指標」這個說法,程式中為了便於理解才用行和列來表示二維陣列,實際上資料是按順序存放的,也就是說物理上根本沒有行列的概念。 有關二維陣列指標的問題。對於*(p+1),是指1行0列p[1][0]的位址,還是指p[0][1]的值? 7樓:金色潛鳥 理由:語句中 陣列和指標 有恆等式: 宣告 int p[5]; 語句中 p[i] == *(p+i); 是數值不是標點符號,而是運算子。 --宣告 int p[5][4]; 語句中 p[i][j] = (p[i]) j] = *(p[i]+j ) = *(p+i) +j ) 是數值。 --宣告 int p[5][4]; 語句中 **p+1) 是 *(p+i) +j ) 裡 i=1,j=0 的值 p[1][0]。 語句中 *(p+1) 少1個星號,是第二行資料的始位址 &p[1][0] 使用列指標輸出二維陣列元素 8樓:匿名使用者 首先說明一下什麼是列指標。 在c語言中,陣列是不同於普通變數的,實際上c定義的陣列是指向該陣列第乙個元素的指標。這是第乙個概念,即陣列名就是指標,所以可以直接當做指標來用,例如:對於乙個陣列a,要取其第三個元素的值,既可以用a[2],也可以用a+2來訪問。 對於乙個二維陣列,如果用下標變數來表示的話,則可以理解為:第乙個下標變數指向該變數對應的行,第二個下標變數指向行內對應的乙個元素。如下所示,第i行: a[i][0] a[i][1] a[i][2] .a[i][j] 如果將首行視為乙個特殊的元素,這個「特殊的」元素是乙個一維陣列。那麼二維陣列a[m][n]是由m個「特殊的」元素組成的乙個「特殊的」一維陣列。 a是這個「特殊的」一維陣列的名稱,是首位址,也是第乙個元素的位址,也是第一行的首位址,是指首行一整行,並不是指某個具體元素。那麼我們稱之為「行指標」。同理: a+0,a+1,a+2,都是行指標。 接下來,我們放大來**首行,首行的元素分別是:a[0][0], a[0][1], a[0][2],.a[0][n]。 將其看作乙個獨立的一維陣列,那麼a[0]就是這個陣列的名稱,也就是這個陣列的首位址,也就是第乙個元素的位址,也就是a[0]+和a[0]+0都是指具體的元素,那麼我們稱之為「列指標」。 總結一下:行指標指的是一整行,不指向具體元素;列指標指的是一行中某個具體元素。 既然是指標,當然就會遵照指標的一些操作規則,總結下來,行指標與列指標之間的轉換關係為: 行指標 ——列指標。 列指標 ——行指標。 下面言歸正傳,給出乙個用列指標輸出二維陣列的例子: #include void main() int *p= a[0]; // 列指標的定義法。 for(; p < a[0] +12; p++) return;} 伊旋圭蒙 int m 可以分步驟來理解 m意思是引用這個整型數,m代表指向這個整型數的指標,m代表指向 m的指標,也就是傳說中指向指標的指標 一般情況下形參為指標型別時,可以傳送陣列名作為實參,也即陣列的起始地址,二維陣列的可以看成是多個一維陣列組成的 用這種二維指標是不能操作這種二維陣列的,二維指... 你只是要修改第一列,那麼修改的時間複雜度應該是常數,等於行數。因此樓上的解法就如脫了褲子放屁一樣。int main int a i for i i i for int j j j a i j i j for i i i 這樣即可。a i for i i i for int j j j printf ... 如果把陣列名當作引數傳遞給函式時,那麼編譯器將認為傳遞的是指標。在函式中同樣可以操作該指標,訪問陣列元素,不管它是多少維陣列。比如 int iarray 10 void f1 int p1 如果這樣呼叫f1 iarray 那麼p1 0 等於iarray 0 p1 1 等於iarray 1 以此類推 ...二維陣列與指標,二維陣列a的“列指標”與“行指標”有什麼聯絡
如何將乙個二維陣列的列固定
c 裡一維陣列名,是個指標,那二維陣列名呢