


What is the difference between declaration and definition of C user identifiers?
In C language, the declaration of an identifier declares its existence in the compiler, while the definition gives it a specific value based on the declaration. Declarations can be repeated, while definitions can only occur once and must be in appropriate .c files, usually used in header files, and definitions in .c files.
In C language, the declaration and definition of identifiers are to put it bluntly to tell the compiler the difference between "I know there is such a thing" and "what is this thing". These two sound like each other, but they are actually far apart. If you can't figure this out, no matter how fancy your code is, it is easy to cause trouble.
You think, you have to tell the compiler what tools you plan to use, right? That's what the statement means. It tells the compiler: "Hey, I plan to use a variable called myVariable
, it is an integer." But it doesn't say what the specific value of myVariable
is. It's like you booked a table but haven't sat down yet.
What is the definition? Only by defining things truly “create”. It not only tells the compiler that myVariable
is an integer, but also assigns a value to it, such as myVariable = 10;
. This is equivalent to not only booking a table, but also sitting down, and this table is yours now.
Therefore, only the declaration is of type and the definition is of value. Declaration can be made multiple times, and definition can only be made once. You can declare the same variable in multiple places and tell the compiler "I want to use it here too", but you can only define it in one place and assign it the initial value.
Look at the code and you will understand:
<code class="c">// 声明:告诉编译器有个叫myVar的整型变量,但还没赋值extern int myVar; // 定义:创建myVar这个变量,并赋值为5 int myVar = 5; void myFunction() { // 声明:在这个函数里,我也要使用myVar extern int myVar; // 使用myVar myVar = 10; } int main() { // 使用myVar printf("myVar = %d\n", myVar); myFunction(); printf("myVar = %d\n", myVar); return 0; }</code>
In this code, extern int myVar;
is a declaration, which tells the compiler that the variable myVar
is defined elsewhere, and I want to use it here. And int myVar = 5;
is the definition, it creates myVar
and assigns values. You can declare the same global variable in multiple .c
files, but you can only define it in one .c
file. Otherwise, the compiler will go crazy because it doesn't know what myVar
is.
Let me remind you again: header files ( .h
files) are usually used to declare, not define. Definitions are usually placed in .c
files. If you define global variables in a header file and multiple files contain this header file, it will lead to repeated definition errors and the compiler will report errors without mercy. This is a common pitfall! Remember, declarations can be made multiple times, definitions can only be made once, and they should be placed in a suitable .c
file. This is the essence of C language and it is also a place where many beginners are prone to make mistakes. You must understand thoroughly in order to write robust and efficient C code.
The above is the detailed content of What is the difference between declaration and definition of C user identifiers?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The steps to draw a Bitcoin structure analysis chart include: 1. Determine the purpose and audience of the drawing, 2. Select the right tool, 3. Design the framework and fill in the core components, 4. Refer to the existing template. Complete steps ensure that the chart is accurate and easy to understand.

Exchanges that support cross-chain transactions: 1. Binance, 2. Uniswap, 3. SushiSwap, 4. Curve Finance, 5. Thorchain, 6. 1inch Exchange, 7. DLN Trade, these platforms support multi-chain asset transactions through various technologies.

Aavenomics is a proposal to modify the AAVE protocol token and introduce token repos, which has implemented a quorum for AAVEDAO. Marc Zeller, founder of the AAVE Project Chain (ACI), announced this on X, noting that it marks a new era for the agreement. Marc Zeller, founder of the AAVE Chain Initiative (ACI), announced on X that the Aavenomics proposal includes modifying the AAVE protocol token and introducing token repos, has achieved a quorum for AAVEDAO. According to Zeller, this marks a new era for the agreement. AaveDao members voted overwhelmingly to support the proposal, which was 100 per week on Wednesday

Cryptocurrency data platforms suitable for beginners include CoinMarketCap and non-small trumpet. 1. CoinMarketCap provides global real-time price, market value, and trading volume rankings for novice and basic analysis needs. 2. The non-small quotation provides a Chinese-friendly interface, suitable for Chinese users to quickly screen low-risk potential projects.

The platforms that have outstanding performance in leveraged trading, security and user experience in 2025 are: 1. OKX, suitable for high-frequency traders, providing up to 100 times leverage; 2. Binance, suitable for multi-currency traders around the world, providing 125 times high leverage; 3. Gate.io, suitable for professional derivatives players, providing 100 times leverage; 4. Bitget, suitable for novices and social traders, providing up to 100 times leverage; 5. Kraken, suitable for steady investors, providing 5 times leverage; 6. Bybit, suitable for altcoin explorers, providing 20 times leverage; 7. KuCoin, suitable for low-cost traders, providing 10 times leverage; 8. Bitfinex, suitable for senior play

Suggestions for choosing a cryptocurrency exchange: 1. For liquidity requirements, priority is Binance, Gate.io or OKX, because of its order depth and strong volatility resistance. 2. Compliance and security, Coinbase, Kraken and Gemini have strict regulatory endorsement. 3. Innovative functions, KuCoin's soft staking and Bybit's derivative design are suitable for advanced users.

The detailed introduction of OKX Exchange is as follows: 1) Development history: Founded in 2017 and renamed OKX in 2022; 2) Headquartered in Seychelles; 3) Business scope covers a variety of trading products and supports more than 350 cryptocurrencies; 4) Users are spread across more than 200 countries, with tens of millions of users; 5) Multiple security measures are adopted to protect user assets; 6) Transaction fees are based on the market maker model, and the fee rate decreases with the increase in trading volume; 7) It has won many honors, such as "Cryptocurrency Exchange of the Year".

Exchanges play a vital role in today's cryptocurrency market. They are not only platforms for investors to trade, but also important sources of market liquidity and price discovery. The world's largest virtual currency exchanges rank among the top ten, and these exchanges are not only far ahead in trading volume, but also have their own advantages in user experience, security and innovative services. Exchanges that top the list usually have a large user base and extensive market influence, and their trading volume and asset types are often difficult to reach by other exchanges.
