⑴ c語言中的二維數組的賦值,輸入輸出怎麼用
代碼,實現先輸入二維數組的行數m和列數n,並再輸入m*n個整型數據存到動態二維數組中。最後輸出所有二維數組的元素值。
int main()
{
int**p;//定義二維指針。
int m,n;//行數和列數。
int i,j;
scanf("%d%d",&m,&n);//輸入行數和列數。
if(m<=0||n<=0)return-1;//行數或列數非法。
p=(int**)malloc(sizeof(int*)*m);//申請一組一維指針空間。
for(i=0;i<m;i++)
p<i>=(int*)malloc(sizeof(int)*n);//對於每個一維指針,申請一行數據的空間。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&p<i>[j]);//輸入第i行第j列的數據。其中&p<i>[j]也可以寫作p<i>+j或者是*(p+i)+j.功能相同。
printf("輸入的數組為%d行%d列: ",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)//這個循環可以輸出一行元素。
printf("%d",p<i>[j]);//輸出i行j列的元素。
printf(" ");//每行輸入結束加換行符。
}
//釋放內存
for(i=0;i<m;i++)
free(p<i>);
free(p);
return 0;
}
(1)c語言二維指針動態賦值擴展閱讀:
函數:free
功能:與malloc()函數配對使用,釋放malloc函數申請的動態內存。(另:對於free(p)這句語句,如果p是NULL指針,那麼free對p無論操作多少次都不會出問題。如果p不是NULL指針,那麼free對p連續操作兩次就會導致程序運行錯誤。)
用法;void free(void*ptr);
程序例:
C/C++代碼如下:
#include<string.h>
#include<stdio.h>
#include<alloc.h>//or#include<malloc.h>
int main(void)
{
char*str;
/*allocate memory for string*/
str=(char*)malloc(10);
/*"Hello"to string*/
strcpy(str,"Hello");
/*display string*/
printf("String is%s ",str);
/*free memory*/
free(str);
str=NULL;
return 0;
}
⑵ c語言問題,用指針為一個二維數組賦值
ptr=arr;
其實你這樣賦值也是可以的,是沒有問題的。
因為arr是二維數組的數組名,它(arr)本身就代表這個二維數組的第0行的地址。
問題關鍵不是出現在這里,而是在你程序的while循環語句中
while(scanf("%f",&ptr+i)&&i!=7)
i++;
你這樣寫是不對的,首先ptr指向的是一個地址,所以ptr+i也是一個地址,所以這里就不能用變址運算符"&"了。第二個問題是,i從0自加到6,這裡面其實有了7個數,明顯超過了arr數組的長度,這樣是不對的。這個循環還有一個問題就是,這本身就是一個不正常的循環(自己想想為什麼)
下面是我幫你改改的代碼,希望對你會有幫助。
#include<stdio.h>
voidmain()
{
doublearr[2][3];
double*ptr;
inti=0;
ptr=*arr;//把數組arr第0行第0列的地址賦給ptr,其作用與ptr=arr;相同,
但不建議採用ptr=arr;這樣的賦值//
printf("Pleseenter2*3numbers: ");
for(i=0;i<6;i++)
scanf("%lf",ptr+i);//注意不要將ptr+i寫成&ptr+i或&(ptr+i),否則出錯//
for(i=0;i<6;i++)
printf("%g",*ptr++);
printf(" ");
}
⑶ C語言如何給用函數二維數組動態賦值
1、當成普通數組使用,用for循環即可賦值。
2、常式:
#include
#include
int
main(void)
{
int
*a=NULL;
int
i;
a=malloc(sizeof(int)*10);/*動態創建一個有10個int元素的數組*/
if
(a==NULL)
{
/*a==NULL表示空間分配失敗*/
fprintf(stderr,"MEMORY
ERROR");
return
-1;
}
for
(i
=
0;
i
<
10;
i++)
{
a[i]=i;
/*對數組進行賦值操作*/
}
free(a);/*動態分配的空間需要用free()函數釋放*/
return
0;
}
⑷ c語言中怎樣實現對二維數組元素進行賦值並輸出。
可以按照下面步驟進行定義二維數組並輸出:
1 定義二維指針。
2 確定數組維數,即行數和列數。
3 申請行數個一維指針大小空間,並賦值給二維指針。
4 對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指針。
5 輸入或賦值數據。
6 使用雙重循環,逐個范圍存儲單元並輸出。
7 逐個釋放一維指針上的內存。
8 釋放二維指針上的內存。
以整型二維數組為例:
下面的代碼,實現先輸入二維數組的行數m和列數n,並再輸入m*n個整型數據存到動態二維數組中。最後輸出所有二維數組的元素值。
⑸ C語言指針賦值二維數組問題
iArray[i][i],試試看吧,如果不行就換一種寫法,直到調試成功為止,一般需要多練習和實踐的編程語言習題,需要多思考,多練習,多交流才能提高水平。
⑹ c語言二級指針賦值問題
首先,你理解的沒錯。
b和a都指向了同一塊內存。
這塊內存的內容是61
62
63
00
41
42
43
00
31
32
33
00
a[0]這個指針,我們知道這個指針是一個指向四個字元的字元串,所以可以得到它的值是abc\0,即61
62
63
00
而對於d指針,我們僅僅知道它是一個二維的指針,並不知道它第一維的空間是多大。於是取裡面的值當作一個指向char的一維指針,一個指針佔4個位元組,按低位往高位存儲。你可以這樣理解,假設有一個char
*
pchar
=
d[0],那麼
pchar的就是固定的,是一個指向0x00636261的指針。這就是你看到
"\0cba"了。
⑺ C語言如何給指針數組動態賦值
可以試試再創建一個char類型的二維數組,如char
temp[16][16],然後分別把temp[0
...
15]的每一個元素temp[...][0...14]賦上'a'
+
隨機數值(0
~
25的)。再把temp[...][15]賦值為'\0'。最後把str[0...15]分別指向temp[0...15]