c語言字元二維數組指針
A. c語言二維數組指針變數是什麼,int (*p)[2]什麼意思
二維數組指針變數形式如下:
類型名
(*數組名)[數組行數][數組列數]
如:int
(*p)[2][3];
//
定義一個int類型的二維數組指針變數,數組中每個元素都是一個指針
int
(*p)[2]表示定義一個數組指針,只是是一個一維的數組指針,數組中每個元素(共2個元素)都是一個int類型的指針變數,指針指向的地址就需要後續程序給出,不然會變為野指針。
B. C語言二維數組指針變數是什麼int (*p)[2]什麼意思
c語言比較靈活,C語言的指針更加靈活多變,int (*p)[2]是一個整型的指針型一維數組,表示兩個元素,具體如下,
數組指針變數形式如下:
類型名 (*數組名)[數組行數][數組列數]
int (*p)[2]表示定義一個數組指針,指針指向的地址就需要後續程序給出,不然會變為野指針。
C. c語言中二維數組的指針如何表示
比如定義一個int型的二維數組,如下:
int **p;
或者
int p[MAX_ROW][MAX_LINE];
不同的是前者定義了一個int型二維數組的指針,編寫器知道該指針的移動方式以int為單位,但此時該指針為NULL,即沒有與內存中的物理單元進行對應。使用指針前需要用malloc()為該指針分配一段內存空間,內存空間的大小在malloc()的參數中指定,系統會為該指針分配一段空閑內存供該指針使用。或者將你的程序中其他int類型的指針賦值給該指針使其映射到內存物理單元。在程序結束或不在需要使用該指針時需要使用free()將該指針所映射內存釋放。
後者在定義時為該指針分配了MAX_ROW*MAX_LINE個int大小的空間映射到內存,之後就可以直接使用了。
D. c語言,指向二維數組的指針變數
int
(*p)[4]這個就能當做二維數組的指針,第二維的長度得是4。
傳遞一維數組的時候,用的就是指向元素的指針,而不是指向數組的指針
int
a[10];
void
f(int
*p);
f(a);
int
b[10][10];
void
f2(int
(*p)[10]);
f2(b);
E. C語言關於二維數組指針表示方法
雖然說「首地址
=
array[0]=&array[0][0]」,這只代表他們的值相同,意義不同的。
array是二維指針變數,array[0]是一維指針變數,&array[0][0]是變數的地址。
*array
表示二維指針前加*
等於一維指針array[0],值還是以前的值,但是意義不同。
F. c語言裡面怎麼用指針表示二維字元數組
二維數組就是數組的數組,二維數組即數組的元素是一維數組的數組。那麼我們要用指針指向二維數組,就是要定義一個指向數組的指針了。例如:
char str[3][10]; //定義了一個char型的二維數組
char (*pstr)[10]; //定義了一個指向char型的數組指針
pstr=str; //指針指向二維數組str
下面用pstr這個指針對二維數組進行賦值操作
int i;
for(i=0;i<3;i++)
scanf("%s",*(p+i)); //*(p+i)等價於str[i]
G. C語言中二維字元數組和指針的問題
char *s[100]表示數組s[100]是指針類型的,每個數組元素都相當於一個指針變數,都可以指向一個字元型變數;
char(*s)[100]表示s是一個指針變數,它指向包含100個字元型元素的一維數組;
str[]表示一個字元數組;這題中,str[i]=str[0],而gets函數表示得輸入字元串,輸入沒有限制,直到輸入換行符或者其他的結束標識,輸入才結束;輸入的字元串就存放在str[10][100]這個數組中,str[0]表示將輸入的第一個字元存在數組的首位元素中,其他的字元按數組順序存放。
H. C語言指向二維數組的指針
一、你的 float score 數組定義的是:一個3行、4列的二維浮點數組,數組的元素為浮點數。如果你換個格式書寫就清晰了!
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
在調用的過程中,score 就是這個數組的首地址,指向的是浮點數組{65,67,70,60,}。score + 1 指向的是數組{80,87,90,81,}。
二、你的 float *p 定義的是:一個指向浮點數的指針。這個是一維的。
在調用的過程中,float 指向的是 xx。一個浮點數字。
兩個的定義不同,所以參數傳遞過程中會出錯。
三、你的 float (*p)[4] 定義的是:一個指向含有四個元素的浮點數組的指針。
在調用的過程中,float 指向的是{xxx,xx,xx,xx,},由四個浮點數組成的數組。
這時兩個定義相同,所以參數傳遞過程中沒有錯誤。
四、有個建議,你的程序書寫格式不清晰,不利於你糾錯和修改,應該盡量的清晰、明確,不建議使用簡化方式定義參數。
作為一個軟體工作者,應該盡量使程序流暢、格式清晰、易讀,這是一個軟體工作者最基本的職業素養。
格式化後,程序如下,會清晰很多:
#include<stdio.h>
void main()
{
void search (float (*p)[4],int n);/*這里的 float *p 好像有問題*/
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
search(score,2);
}
void search(float (*p)[4],int n)/*這里的 float *p 好像有問題*/
{
int i;
printf("the score of No.%d are:\n",n);
for(i=0;i<4;i++)
{
printf("%5.2f",*(*(p+n)+i));
}
printf("\n");
}