c語言動態指針數組
❶ c語言動態數組
C語言不支持動態數遲首組的,C++可以採用new動態分配。且碼搜數真正的類(class)在C++才有。C只有漏好結構體(與C++的class相類似)。
❷ C語言如何給指針數組動態賦值
可以試試再創建一個char類型的二維數組,啟派歲鉛如char temp[16][16],然後分別把temp[0 ... 15]的每一個元素temp[...][0...14]賦上'a' + 隨機數值(0 ~ 25的)。悄雀賀再把temp[...][15]賦值為'\0'。最後把str[0...15]分別指向temp[0...15]
❸ c語言動態數組的指針問題
首先,int *p=NULL;改成 char *p=NULL;
其帆粗次,scanf輸入字元有問題,如果在格式串中添加空態知鎮格問猛前題更大,因為會將你的回車也當成輸入的字元進行處理,可以考慮使用getchar函數
❹ c語言如何實現動態指針
方法很多,不過一般都是跡絕渣基於二級指針實現的姿悄,還有一種數組指針的方法,怕把你弄糊塗了,我就~~~~
比如下面是開辟3行4列的數組二級宏仿指針實現
int **a = (int**)malloc(sizeof(int)*3);
for (int i=0;i<3;i++)
{
a[i] = (int*)malloc(sizeof(int)*4);
}
❺ C語言 怎樣動態分配一個二維結構體指針數組
//#include"stdafx.h"//vc++6.0加上這一行.
#include"stdio.h"
#include"stdlib.h"
structData{
intx;
};
intmain(void){
structData***p,x,y;
inti;
p=(structData***)malloc(2*sizeof(structData**));
for(i=0;i<2;i++)
p[i]=(struct殲野Data**)malloc(3*sizeof(structData*));
p[0][0]=&x;//這兩行是做存氏肆喊入structData*型指針試驗
p[1][2]=&y;//
雹余//...
for(i=0;i<2;free(p[i++]));
free(p);
return0;
}
❻ C語言的指針表示動態二維數組怎麼弄
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intnumber;
inti,j,max;
doubletemp;
double(*fp)[3],*dp;
printf("輸入學生的人數:");
scanf("%d",&number);
fp=(double(*)[3])malloc(sizeof(double)*3*number);//fp應該是個數組指針,這樣就能動態的保存數據。二級指針和這個的區別很大
姿尺賣dp=(double*)malloc(sizeof(double)*number);
for(i=0;i<number;i++)
{
printf("輸困慧入第%d名同學的三門成績:",i+1);
dp[i]=0;
for(j=0;j<3;j++)
{
scanf("%lf",*(fp+i)+j);
dp[i]+=(*(fp+i))[j];
}
dp[i]=跡逗dp[i]/3;//這里要除3求平均成績
}
printf("以下是各位同學三門課的平均成績 ");
for(i=0;i<number;i++)
printf("第%d名同學:%lf ",i+1,dp[i]);
printf("對以上同學按平均成績從大到小進行了排列. ");
printf("----------------------------------------- ");
//排序法不對
for(i=number-1;i>0;i--)
{
max=number-1;
for(j=i-1;j>0;j--)
if(dp[j]>dp[max])
max=j;
temp=dp[i];
dp[i]=dp[max];
dp[max]=temp;
}
}
❼ C語言:指針定義動態數組後,引用時出現: error C2112: 「-」: 指針減法要求整型或指針操作數
你聲正備明的是 double **BL=NULL,**EI=NULL,**FM=NULL,**P=NULL;
P,FM 是舉閉毀雙重(**)指針。
P[0] 是 double *。
P[0][0]=P[0][0]-FM[0][0]; 是可以的。態卜
❽ C語言 如何給指針數組劃分動態存儲空間
數據結構專門有講的,下幾個課件看看就行了.
1.分配內存襪譽空間函數malloc
調用形式: (類型說明符*) malloc (size) 功能:在內存的動態存儲區中分配一塊長度為"size" 位元組的連灶好襪續區域。函數的返回值為該區域的首地址。 「類型說明符」表示把該區域用於何種數據類型。(類型說明符*)表示把返回值強制轉換為該類型指針。「size」是一個無符號數。例如: pc=(char *) malloc (100); 表示分配100個位元組的內存空間,並強制轉換為字元數組類型, 函數的返回值為指向該字元數組的指針, 把該指針賦予指針變數pc。
2.分配內存空間函數 calloc
calloc 也用於分配內存空間。調用形式: (類型說明符*)calloc(n,size) 功能:在內存動態存儲區中分配n塊長度為「size」位元組的連續區域。函數的返回值為該區域的首地址。(類型說明符*)用於強制類型轉換。calloc函數與malloc 函數的區別僅在於一次可以分配n塊區域。例如: ps=(struet stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu類型,並把其首地址賦予指針變數ps。
3.釋放內存空間函數free
調用形式: free(void*ptr); 功能:釋放ptr所指向的一塊內存空間,ptr 是一個任意類型的指針變數,它指向被釋放區域的首地址。被釋放區應是由malloc或calloc函數所分隱激配的區域:
如
main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
printf("Number=%d\nName=%s\n",ps->num,ps->name);
printf("Sex=%c\nScore=%f\n",ps->sex,ps->score);
free(ps);
}
❾ c語言動態輸入字元指針數組
s[i]= ch;這一行知跡換成strcpy(s[i],ch);試試
s[0],和s[1]分別對應2次的輸入
需要#include <string.h>
或搭仿並者將scanf("%s"大基,ch);改成scanf("%s",s[i]);
去掉s[I]=ch;
❿ 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
*/