请教上 小弟我这么个指针数组赋值对吗
请问下 我这么个指针数组赋值对吗?
#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必然是常量
#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必然是常量