如何動態創建一個指針數組


請問在C語言中如何動態創建一個指針數組??謝謝

6 个解决方案

#1


和一般的數組一樣

#2


找了個例子:

char **ppText = NULL; // 二維動態數組指針   !!!!!
char *pCurrText = NULL; // 指向當前輸入字符串的指針
ULONG ulCurrLines = 0;
ULONG ulAllocedLines = 0;

while (p = getline(pFile))
{
 if (ulCurrLines >= ulAllocedLines)
 {
  // * 當前豎向空間已經不夠了,通過realloc對其進行擴展。
  ulAllocedLines += 50; // 每次擴展50行。 
  ppText = realloc (ppText, ulAllocedLines * (char *));
  if (NULL == ppText)
  {
   return; // 內存分配失敗,返回 
  }
 }
 ppText[ulCurrLines++] = p; // 橫向“擴展”,指向不定長字符串 
...

#3


我想做一個對字符串進行quicksort排序的程序,不過不知道怎么對二維數組進行動態分配,下面是我的程序代碼,請幫我看看,謝謝
#include <iostream.h>
#include <string.h>

void quicksort1(char*p[],int count);

 void main()
{
int n=0;
    char **p=NULL;
cout<<"輸入字符串數組的個數:"<<endl;
cin>>n;
p=new char *[n];               //動態分配行
cout<<"輸入具體數據:"<<endl;

for(int k=0;k<n;k++)
    {
p[k]=new char[20];    //這里如何對列進行動態分配??
cin>>p[k];
cout<<endl;
}


quicksort1(p,n-1);
cout<<"輸出排序后的數據:"<<endl;    //輸出排序后的數據
for(int j=0;j<n;j++)
{
cout<<p[j];

}
}


void quicksort(char *p[],int left,int right)   //對字符串進行quicksort排序
{
char *x;
x=p[(left+right)/2];
char *t;
int i=left,j=right;
   while(i<=j)
   {
   while(strcmp(p[i],x)<0 &&i<right)i++;
   while(strcmp(p[j],x)>0 && j>left)j--;
   if(i<=j)
   {
   t=p[i];
   p[i]=p[j];
   p[j]=t;
   i++;
   j--;
   
   }
   
    
   
   }
    if(j>left) quicksort( p,left,j);
    if(i<right) quicksort( p, i,right);


}
void quicksort1(char *p[],int count)
{
  quicksort(p,0,count-1);
}

#4


new一下

或者malloc一下

#5


不好意思,我是想,當用戶輸入多少個字符,就自動讀出該字符串的大小,然后相應的分配空間,但我用二維指針只能實現行的動態,不能實現列的動態,如程序中的注釋部分.請大哥幫幫忙,謝謝!

#6


先預分配,大小為size,如果超過了再重新分配2*size,依次類推。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com