【C语言】数组指针与指针数组的区分与应用
生活随笔
收集整理的這篇文章主要介紹了
【C语言】数组指针与指针数组的区分与应用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這里以一道C語言題——輸出矩陣兩個(gè)對(duì)角線上的數(shù)(二維數(shù)組)為例
7-57 輸出矩陣兩個(gè)對(duì)角線上的數(shù)(二維數(shù)組) (6 分)
編寫程序,將數(shù)據(jù)輸入一個(gè)n * n二維數(shù)組中,輸出矩陣兩個(gè)對(duì)角線上的數(shù)。假設(shè)數(shù)據(jù)為整型數(shù)據(jù)。
輸入格式:
第1行,輸入 n ,表示矩陣的行列數(shù)。n在2-100之間。
第2行到n+1行,輸入n行數(shù)據(jù),每行n個(gè)數(shù)據(jù),每行的n個(gè)數(shù)據(jù)之間用一個(gè)空格分隔。
輸出格式:
輸出二行,矩陣兩個(gè)對(duì)角線上的數(shù)。第一行為從左上到右下對(duì)角線,第二行從左下到右上對(duì)角線上的值。。
輸入樣例:
在這里給出一組輸入。例如:
4
25 36 78 13
12 26 88 93
75 18 22 32
56 44 36 58
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
25 26 22 58
56 18 88 13
本題代碼
#include <stdio.h>int main(){int n,i,j;int a[100][100]={0};int (*p)[100];//p為數(shù)組指針,數(shù)組*p有100個(gè)int型元素,分別為(*p)[0]、(*p)[1]、…… ,即p指向一個(gè)有100個(gè)int型元素的一維數(shù)組,p為行指針p=a;//p可以這么與a數(shù)組連接起來,p為a數(shù)組的行指針,p[0]與a[0]等價(jià),p[0]表示的是a數(shù)組第1行的第1個(gè)元素的地址,執(zhí)行p++操作后,p指向a數(shù)組的第二行的第一個(gè)元素char *s[10]={"hhjj","hhjhj"};//s為指針數(shù)組,這個(gè)數(shù)組中的每一個(gè)元素都是一個(gè)指針,在這里每一個(gè)元素都可以用來指向一個(gè)字符串,如s[0]指向"hhjj"這個(gè)字符串(這里這個(gè)數(shù)組沒有在代碼中起作用,只起對(duì)比說明作用)scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",*p+j);//*p表示p指向的數(shù)組a的那一行的第一個(gè)元素的地址,*p可以替換為p[0];后面的+j用來在行內(nèi)確定第j+1個(gè)元素,如j=0時(shí),*p+j表示的是p指向的那行的第j+1個(gè)元素的地址--(scanf里面放的是地址所以這里不需要進(jìn)行另外的處理)}p++;//讓p指向數(shù)組a的下一行}//以下輸出矩陣的主對(duì)角線和副對(duì)角線for(i=0;i<n;i++){if(i==0){printf("%d",a[i][i]);continue;}printf(" %d",a[i][i]);}printf("\n");for(i=0;i<n;i++){if(i==0){printf("%d",a[n-i-1][i]);continue;}printf(" %d",a[n-i-1][i]);}return 0;
}
總結(jié)
以上是生活随笔為你收集整理的【C语言】数组指针与指针数组的区分与应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车模多少钱啊?
- 下一篇: 求一个微信带福的网名