二维数组与变量总结

本文详细介绍了C语言中二维数组的动态开辟,以及extern关键字在跨文件使用变量时的作用。同时,讲解了不同类型的变量在内存中的分配区域,包括普通局部变量、全局变量、静态修饰的局部和全局变量。还提到了代码段、数据段、堆区和栈区的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
* 1. 动态开辟二维数组
* 2. extern 关键字  ->  外部的
*     a.cpp  定义 int a = 222;
*     b.cpp 使用 a变量。先声明变量a  extern int a;  源文件中已经定义过a,编译器LINK  变量
* 3. 变量:普通局部变量: 函数中定义的变量  .stack   只声明未定义   随机
           普通全局变量:  函数外定义的变量 .data    只声明未定义   类型默认值
           static 静态修饰局部变量 ->  局部静态变量
           static静态修饰全局变量 -> 全局静态变量

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include"a.h"  //预编译阶段 头文件 展开到当前文件 
#define ROW 3
#define COLUMN 4
extern int a; //声明a变量已经被定义过(本文件/其他源文件)

//void fun(); //声明在本文件中定义过fun函数
extern void fun();
void func() {
	static int a;//静态局部变量
	printf("%d\n", a);//若a定义在其他源文件中
}
int main() {
	char c = -1;//二进制为1111 1111
	unsigned char d = (unsigned char)c;//强转为无符号的 char,类型 d=255;
	printf("%d", d);


	func();
	int** brr = (int**)malloc(sizeof(int*)*ROW);
	if (brr == NULL)  return -1;
	for (int i = 0; i < ROW; i++) {
		brr[i] = (int*)malloc(sizeof(int)*COLUMN);
		memset(brr[i], 0, sizeof(int) * COLUMN);//初始化brr,给每个数组赋值为0
	}

	for (int i = 0; i < ROW; i++) {
		for (int j = 0; j < COLUMN; j++) {
			printf("%d ",brr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

void fun() {
	printf("fun()");
}

4..text: 文件   ->代码段区->函数调用  

        .data  数据:全局变量,字符串常量

        .heap 堆区  :动态内存 申请(malloc realloc calloc)  释放

        .stack   栈区   函数局部变量

5.static 文件作用域

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值