//指针数组
char *pszBuf[] = {"123", "456", "789"};
//二维数组
char *psz[3][4] = {"123", "456", "789"};
//手工二维内存
char **p3 = (char **)malloc(3 * sizeof(char *)); //这句相当于int array[3]; //p3就分配四个字节内存,啥也不干
for (i=0; i<3; i++)
{
p3[i] = (char *)malloc(10*sizeof(char)); //char buf[10]
sprintf(p3[i], "%d%d%d", i, i, i);
}
另一个: 全局区包括 常量区,静态存储区
标准:
1,第二种内存模型全部分配到栈里面去了。可以在栈里面分配内存空间(C语言特有);
2,第一种和第三种 p+1 本质是一样的,都是往后面跳 四个字节 p1+1与p3+1 步长一样;
3,第二种内存模型 若是int [10][30] 则 p2+1 是往后面跳30个单元 , p2的步长和 p1,p3不一样。
时间: 2024-10-19 02:06:13