C實(shí)現(xiàn)不定長數(shù)組的示例
更新時(shí)間:2018年07月19日 14:24:11 作者:蔡松豆
今天小編就為大家分享一篇C實(shí)現(xiàn)不定長數(shù)組的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
寫程序的時(shí)候經(jīng)常要定義這樣一個(gè)數(shù)組,要前面程序運(yùn)行后才能知道數(shù)組的大小,然而C語言不支持直接定義不定長數(shù)組的定義,但是我們可以通過動(dòng)態(tài)數(shù)組實(shí)現(xiàn)一個(gè)不定長度的數(shù)組。
一維數(shù)組:
#include<stdio.h> #include<stdlib.h>//要使用malloc是要包含此頭文件 #include <memory.h>//要使用memset是要包含此頭文件 int main() { int m; scanf("%d", &m);//scanf只是遇到回車符的時(shí)候結(jié)束,并沒有把回車符輸入,因此輸入流中還有一個(gè)回車符 getchar();//把輸入流中的回車符讀走 int *p; p = (int*)malloc(m*(sizeof(int)));//動(dòng)態(tài)申請內(nèi)存 memset(p, 0, m);//初始化,每個(gè)元素都為零 int i; for (i=0;i<m; i++)//數(shù)組賦值 { p[i] = i; } for (i = 0; i <m; i++)//打印數(shù)組 { printf("%d,", p[i]); } free(p);//釋放內(nèi)存 getchar();//讓程序停頓,好看到輸出 return 0; }
二維不定長數(shù)組
#include <stdio.h> #include <stdlib.h>//要使用malloc是要包含此頭文件 #include <memory.h>//要使用memset是要包含此頭文件 int main() { int m, n; scanf("%d%d", &m,&n);//scanf只是遇到回車符的時(shí)候結(jié)束,并沒有把回車符輸入,因此輸入流中還有一個(gè)回車符 getchar();//把輸入流中的回車符讀走 int **p; p = (int**)malloc(m*(sizeof(int*)));//二級指針?biāo)诘刂飞暾垉?nèi)存 int i, j; for (i = 0; i<m; i++) p[i] = (int*)malloc(sizeof(int)*n);//一級指針?biāo)诘刂飞暾垉?nèi)存 for (i = 0; i < m; i++) for (j = 0; j < n; j++) p[i][j] = i + j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%d %p ", p[i][j], &p[i][j]); //輸出每個(gè)元素及地址,每行的列與列之間的地址時(shí)連續(xù)的,行與行之間的地址不連續(xù) } printf("\n"); } for (i = 0; i < m; i++) free(p[i]); free(p); getchar();//讓程序停頓,好看到輸出 return 0; }
以上這篇C實(shí)現(xiàn)不定長數(shù)組的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言中QString與QByteArray互相轉(zhuǎn)換的方法
本文主要介紹了C語言中QString與QByteArray互相轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05