當前位置:首頁 » 編程語言 » c語言二維指針動態賦值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言二維指針動態賦值

發布時間: 2022-10-11 19:44:33

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]