我刚开始阅读Brian Kernighan和Dennis Ritchie 的C编程语言,我发现了这句话:
该语言没有定义除静态定义之外的任何存储分配工具以及由函数的局部变量提供的堆栈规则; 没有堆或垃圾收集.
那么这是否意味着它是由于malloc()函数,它从堆中返回一些内存地址,C才能访问堆内存?然后必须malloc用其他语言编写,最有可能是汇编或B?
这可能是一个愚蠢的怀疑,但我必须清除它.谢谢.
我不明白为什么我必须接收2D数组的内容b[][3]而不是 **b?另外我们如何才能为二维数组调用值?另外,2D阵列的地址arr等于内容的arr等于*arr等于&arr[0][0]; 所有地址都一样.我无法清楚地看清楚它; 有人可以向我解释如何实际存储多维数组."图片有用的链接将受到欢迎".
#include "hfile.h" // contains all needed H files
void caller(int b[][3]) // why can't we write **b?
{
int k=100;
printf("\n****Caller:****\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
b[i][j]=k++;
printf("\t %d",b[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[3][3]={1,2,3,4,5,6,7,8,9}; // original containts
caller(arr); // Called caller function passing containts of "arr"
printf("\n****Orignal****\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("\t %d",arr[i][j]);
printf("\n");
}
return 0; …Run Code Online (Sandbox Code Playgroud)