首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言變量地址的類型表示:指針類型與整數類型的選擇原則

     編輯:C 語言問答

標準答案:指針類型

變量地址在 C 語言中本質上是指針值,應使用對應的指針類型存儲:

變量類型地址類型聲明示例
charchar *char *p = &c;
intint *int *p = &i;
doubledouble *double *p = &d;
struct Sstruct S *struct S *p = &s;
void (通用)void *void *p = &x;

特殊場景:整數類型存地址

極少數情況 (與硬件交互、序列化、調試打印) 需用整數存地址,必須選用足夠寬度的無符號整數:

平台位寬地址寬度推薦類型 (<stdint.h>)備選
16 位16 bit (2 byte)uint16_t / uintptr_tunsigned int
32 位32 bit (4 byte)uint32_t / uintptr_tunsigned long
64 位64 bit (8 byte)uint64_t / uintptr_tunsigned long long

最佳實踐:使用 uintptr_t


#include 
#include  // PRIuPTR

uintptr_t addr = (uintptr_t)&var;
printf("Address: 0x%" PRIxPTR "\n", addr); // 可移植打印
  • uintptr_t 由 C99 標準保證能容納任意對象指針轉換的整數值。
  • intptr_t 為有符號對應類型。
  • 避免直接用 int/long — 在 64 位 Linux/Windows (LP64/LLP64) 上 long 可能 4/8 字節不一致,極易移植出錯。

打印地址的標準方式


printf("%p\n", (void*)&var); // %p 期望 void*,輸出實現定義格式 (通常 0x...)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved