首页 > 其他分享 >C语言学习日志1-定义与声明

C语言学习日志1-定义与声明

时间:2024-06-08 13:43:57浏览次数:26  
标签:定义 对象 C语言 编译器 内存 日志 声明 变量

什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它 取上一个名字,这个名字就是我们经常所说的变量名或对象名。

一个变量或对象在一定的区 域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义 同一个变量或对象。

什么是声明:有两重含义,如下:

第一重含义:告诉编译器,这个名字已经匹配到一块内存上了,下面的代码用到变量或对象是在别的地方定义的。

第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量 名或对象名。这种声明最典型的例子就是函数参数的声明

举例:
int i;是定义
虽然没有赋值,但是声明了整型变量,直接就开始用了,所以系统会先自动赋初值0,故该处是定义。
如果你只声明一个变量而没有给他赋值的语句:如果这个代码在C语言中,并且在之后的代码里面你没有用到这个变量,编译成程序运行时,编译器自动帮你删掉你的声明语句!所以就不占内存;如果你用它了,他就是一个随机数,就会占内存。

extern int i;是声明
这个声明既没有赋值,也不会直接开始使用。

extern int i =0;是定义
这个声明赋值了。

void a(void);是声明

总结:

定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存

标签:定义,对象,C语言,编译器,内存,日志,声明,变量
From: https://www.cnblogs.com/robinly/p/18233092

相关文章

  • C语言 比较mac
    cilium1.15.1把单个mac拆分成2个整数,做减法比较。#include<stdio.h>unionmacaddr{ struct{ __uint32_tp1; __uint16_tp2; }; __uint8_taddr[6];};static__always_inlineinteth_addrcmp(constunionmacaddr*a, constunionmacaddr*b){ i......
  • 【C语言】动态内存经典笔试题(上卷)
    前言本系列将详细讲解4道有关动态内存的经典笔试题,以助于加深对动态内存的理解。这些题目都非常经典,你可能随时会遇到它们,所以非常重要。本文讲解其中的前两题。第一题这个程序运行的结果是什么?voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(......
  • conda的配置文件.condarc频道优先级和定义频道
    先观察清华源的conda配置文件:channels:-defaultsshow_channel_urls:truedefault_channels:-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r-https://mirrors.tuna.tsinghua.edu.cn/anaconda......
  • C语言详解(动态内存管理)1
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 解决C语言中scanf函数无法输入直接跳过的问题
    如果比较急的话,可以直接用这些方法,不急的话,建议读完。方法:1、看在调用该scanf函数前有没有用键盘输入过数据,有的话,可以尝试在该scanf函数前加个getchar();吃掉'\n'。2、在scanf前加一句"rewind(stdin);"(双引号里面的语句,不要把双引号也复制或打上去了),或者"fflush(stdin);",后......
  • C语言-----数组
    简单了解数组的知识以及数组的运用一、数组的概念二、一维数组1. 一维数组的创建与初始化2. 一维数组的使用三、二维数组1. 二维数组的创建与初始化2. 二维数组的使用四、用sizeof计算数组元素的个数一、数组的概念    数组可以说是目前为止学到的第......
  • c语言基础问题:1瓶汽水1元,2个空瓶可以换一瓶汽水,20元可以喝多少瓶汽水?
    老师布置的小组作业,好像是曾经的蓝桥杯题目,自己琢磨一下写出来了,写都写了还都加了注释,就想着不如发到这上面了,有遇到类似问题的可以看看,代码比较笨但是很好理解。#include<stdio.h>intmain()//1瓶汽水1元,2个空瓶可以换一瓶汽水,20元可以喝多少瓶汽水?{ intyuan=20;//本金......
  • 最大公约数(gcd())和最小公倍数(lcm())的c语言和c++详细解法
    最大公约数(gcd())和最小公倍数(lcm())最大公约数:定义:两个或多个整数共有的约数中最大的一个。例如:整数12和18,他们的公约数有1、2、3、6,其中最大的公约数是6。c语言解法:辗转相除法和更相减损法1、辗转相除法:思路:先求解较大的数除以较小的数的余数,再用较小的数除以前......
  • Linux下的C语言编程(指针)
    目录1一级指针1.1定义1.2指针的内存大小1.3指针的偏移1.3.1加法偏移1.3.2减法偏移2二级指针2.1定义2.2如何理解二级指针3三级指针3.1定义4数组和指针的关系4.1一维数组与指针的关系4.1.1数组名的性质4.1.2数组名与指针的地址偏移4.2二维数组与......
  • 同星TSMaster中如何自定义E2E校验算法
    文章目录前言一、自定义E2E算法教程1.定义checksum算法2.定义【CAN预发送事件】3.E2E报文信号仿真4.运行工程二、TSMaster配置E2E教程1.激活仿真报文2.E2E配置三.小结前言最近因项目需要,用到TSMaster进行E2E校验算法实现。第一次使用TSMaster,把整个的过程做一个记......