c語言指針數組定義
㈠ c語言指針,指向數組的指針、指向指針數組的指針、指向數組的指針的指針,分別如何定義
解答:
1. 如何聲明一個指針,這個指針是指向整個數組的,數組有n個元素,每個元素是int,不是int (*p)[n],而是最簡單的int*p;
2. 如何聲明一個指針,這個指針也是指向數組的,數組有n個元素,每個元素不是int,而是指針int*;這個指針是int**p;
3. 又如何聲明一個指針,它指向另一個指針,這「另一個指針」指向一個數組,數組元素是int;這個指針仍然是int**p。
㈡ c語言中如何定義動態指針數組
1、使用malloc函數,先分配第一維的大小,然後再循環分配每一維的大小。
2、常式,分配3行4列二維數組:
#include<stdio.h>
#include<malloc.h>
intmain()
{
int**a;
inti,j;
a=(int**)malloc(sizeof(int*)*3);//為二維數組分配3行
for(i=0;i<3;++i){//為每列分配4個大小空間
a[i]=(int*)malloc(sizeof(int)*4);
}
//初始化
for(i=0;i<3;++i){
for(j=0;j<4;++j){
a[i][j]=i+j;
}
}
//輸出測試
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
}
printf(" ");
}
//釋放動態開辟的空間
for(i=0;i<3;++i){
free(a[i]);
}
free(a);
return0;
}
/*
輸出:
0123
1234
2345
*/
㈢ C語言 如何定義一個二維指針數組
定義二維指針數組與定義一維指針數組差不多,只是矩陣的維度增加了一維而已。
下面通過具體的實例來說明如何定義一個二維數組
int*p[2][3];//定義一個二維數組,只是定義,並沒有分配地址空間
inti,j;//數組的行數和列數
//下面的2個for循環是用來對二維指針數組進行初始化的,也即分配地址。如果不進行初始化操作,就會使指針變為野指針(即指向不明)。
for(i=0;i<2;i++)
for(j=0;j<3;j++)
p[i][j]=(int*)malloc(sizeof(int));
*p[0][1]=2;//對指針數組中指針所指向的內存單元進行賦值操作
printf("%d ",*p[0][1]);//輸出結果
㈣ C語言指針數組指針怎樣理解
指針數組,指數組元素就是指針
數組指針,對於一維數組來說就是數組名
故對於一維數組來說,數組名是第一個元素的指針,而元素本身也是指針,故數組名是指向指針的指針。
例如:int*p=&a;int**q=&p;
則p中儲存的是整形變數a的地址,而指針p自身也是變數(指針變數通常佔4個位元組),故q中儲存的就是變數p的地址。q就成了指向指針的指針。
㈤ c語言中怎麼定義一個字元串數組指針
c語言中定義一個字元串數組指針可以這樣寫:
//Exampleprogram
#include<stdio.h>
intmain()
{
charstr[]="abc";
char*p=str;
printf("%s ",str);
printf("%s ",p);
return0;
}
㈥ C語言如何定義指針指向字元型二維數組
使用指針變數訪問二維數組的任意一個元素的方法:
1.使用列指針:定義一個列指針p,讓它指向二維數組的第0個元素
int a[3][4];
int *p;
p=&a[0][0];
//因為a[0]是第0行的數組名,所以p=&a[0][0]相當於p=a[0],因為a[i][j]前面共有i*4+j個元素
該二維數組的任意i行j列元素可表示為*(p+i*4+j)。
2.使用行指針:定義一個行指針p,讓它指向二維數組的第0行
int a[3][4];
int (*p)[4];
p=a; //也可以為p=&a[0];
其中* ( *(p+i)+j)表示任意一個i行j列的元素。
(6)c語言指針數組定義擴展閱讀:
數組的使用規則:
1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。
3.如不給可初始化的數組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
網路-數組
㈦ C語言如何定義指針指向字元型二維數組
在C語言中,可以通過如下方式來定義指向字元型二維數組的指針:
char c[4][5]; // 定義一個4行5列的字元型二維數組
char (*pc)[5]; // 定義一個含5個元素的數組指針
pc=c; // 將數組指針pc指向二維字元數組c
註:
char
(*pc)[5]
不能寫為 char
*pc[5]
char
(*pc)[5]
表示數組指針,數組中每個元素為char型;
char
*pc[5]
表示指針數組,數組中每個元素為char*,也即每個元素為指針。