我该如何开始学习C语言编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1824个文字,预计阅读时间需要8分钟。
在上述代码中,变量 `a` 和 `b` 分别被初始化为 1 和 2。尽管在栈上分配了 3 个参数(`argc`、`argv` 和 `envp`),但它们并不占用额外的栈空间。这是因为:
1. `argc` 和 `argv` 是函数参数,它们在栈帧中占据固定位置,不占用额外的栈空间。
2.`envp` 虽然是一个指针数组,但它的元素指针在栈上只占用了 3 个指针的大小,而不是每个指针指向的字符串所占用的大小。
因此,尽管有 3 个参数,栈空间的使用量仍然很小,且没有特殊之处。
int main(int argc, char *argv[], char *envp[]){
int a =1;
int b =2;
return0;
}
在这个代码中,变量a和b还有3个参数都在栈中,那么在栈里面分配的空间有什么特点的呢?!它们在编译器编译期限就为它们预留了空间。那么还有一个堆空间,它和栈空间有什么区别呢?!其实堆空间是在程序运行过程中,你需要什么就找它要什么。打个比方,就好像你去逛超市,你去之前你想买什么,你在脑子里面都已经想好了,到了超市你直接把你需要东西都买啦!这时候你买的这些东西一般都在栈中。但是你在超市里或者看到你当时还没有想买的又很想吃的东西呢,你肯定就再买啦!但是这些东西都是你出门前没有想到的东西,这时候你就需要另外规划钱了,你就再多计划点钱了,但是你身没带那么多钱怎么呀!你就去借点,在计算机中就是找操作系统去借啦!然后去买啦!这时候,这些东西一般就在堆中。而且在计算机里,你就需要向操作系统说,我还要点东西,呵呵!但是找操作系统再要内存,不一定要得到啊,有时候万一没有了呢,所以要内存的时候就需要做1个检查。
本文共计1824个文字,预计阅读时间需要8分钟。
在上述代码中,变量 `a` 和 `b` 分别被初始化为 1 和 2。尽管在栈上分配了 3 个参数(`argc`、`argv` 和 `envp`),但它们并不占用额外的栈空间。这是因为:
1. `argc` 和 `argv` 是函数参数,它们在栈帧中占据固定位置,不占用额外的栈空间。
2.`envp` 虽然是一个指针数组,但它的元素指针在栈上只占用了 3 个指针的大小,而不是每个指针指向的字符串所占用的大小。
因此,尽管有 3 个参数,栈空间的使用量仍然很小,且没有特殊之处。
int main(int argc, char *argv[], char *envp[]){
int a =1;
int b =2;
return0;
}
在这个代码中,变量a和b还有3个参数都在栈中,那么在栈里面分配的空间有什么特点的呢?!它们在编译器编译期限就为它们预留了空间。那么还有一个堆空间,它和栈空间有什么区别呢?!其实堆空间是在程序运行过程中,你需要什么就找它要什么。打个比方,就好像你去逛超市,你去之前你想买什么,你在脑子里面都已经想好了,到了超市你直接把你需要东西都买啦!这时候你买的这些东西一般都在栈中。但是你在超市里或者看到你当时还没有想买的又很想吃的东西呢,你肯定就再买啦!但是这些东西都是你出门前没有想到的东西,这时候你就需要另外规划钱了,你就再多计划点钱了,但是你身没带那么多钱怎么呀!你就去借点,在计算机中就是找操作系统去借啦!然后去买啦!这时候,这些东西一般就在堆中。而且在计算机里,你就需要向操作系统说,我还要点东西,呵呵!但是找操作系统再要内存,不一定要得到啊,有时候万一没有了呢,所以要内存的时候就需要做1个检查。

