首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请教上 小弟我这么个指针数组赋值对吗

2012-09-17 
请问下 我这么个指针数组赋值对吗?#includestdio.h#define M 5int main(int argc, char* argv[]){int n

请问下 我这么个指针数组赋值对吗?
#include<stdio.h>
#define M 5
int main(int argc, char* argv[])
{
  int n=4;
  char *a[M];
  for(int i=0;i<M;i++)
  a[i]=new char[n];
  printf("%d\n",sizeof(a));
  for(i=0;i<M;i++)
  printf("%d\n",sizeof(a[i]));
  int nIndex=1;
  for(i=0;i<M;i++)
  {
  for(int j=0;j<n;j++)
  {
  a[i][j]=nIndex;
  nIndex++;
  printf("%4d",a[i][j]);
  }
  printf("\n");
  }
  for(i=0;i<M;i++)
  delete[] a[i];
  return 0;


请问下 我这样给指针数组赋值对吗
不对的话 那指针数组是怎么赋值的啊?


[解决办法]
没问题啊

不过注意了

#define M 5

如果这个M是函数得出的,运行后的变量就不能这么声明了 char *a[M];

[解决办法]
那只能malloc动态申请了
[解决办法]
#define定义的就是常量
编译即确定值,
也许你想的是对的,但我感觉你表达的欠妥,好像#define的定义的M还能是变量似得。
即便定义#define M 3*4+2
什么的,也没有问题,还是那句话,define在编译阶段完成,所以M必然是常量

探讨
没问题啊

不过注意了

#define M 5

如果这个M是函数得出的,运行后的变量就不能这么声明了 char *a[M];

热点排行