注册 登录
编程论坛 C++教室

请问下 我这么个指针数组赋值对吗?

黄19891218 发布于 2012-08-18 22:47, 337 次点击
请问下 我这么个指针数组赋值对吗?
#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;
请问下   我这样给指针数组赋值对吗
不对的话   那指针数组是怎么赋值的啊?
2 回复
#2
pangding2012-08-18 23:51
对的吧。

问完帖不用这么着急,等一等才会有人回答的。
不用反复开帖问。重复发帖,我把另一个帖掉了啊。
#3
zhoufeng19882012-08-21 00:23
程序代码:

#include<stdio.h>

#define M 5

int main(int argc, char* argv[])
{
    int n=4;
    char *a[M];                // 在堆栈上定义一个长度为5的数组,元素师char指针
    for(int i = 0;i < M;i++)
        a[i]=new char[n];    // 堆上分配长度为5的数组,OK
    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;
}
1