知識社群
登入
中文(台灣)
English(US)
Q&A
線上人數:
311
回首頁
最新活動
(34)
公佈欄
最新公告
近期課程
技術專欄
Android
嵌入式Linux
韌體設計
FPGA / Verilog
站上資源
線上教學
文件總覽
廠商徵才
專業論壇
(1315)
推廣成果
學員專題
Android I/O Workshop
Android 企業產訓專班
活動花絮
(58)
專班學員資訊平台
102年嵌入式軟韌體設計工程師養成班
102年JAVA程式設計班
102Linux網路工程師-LPI認證養成班
嵌入式Linux就業班第二梯次
嵌入式Linux就業班第三梯次
101年 Android設計班(2)
101年 Android設計班(1)
公告
艾鍗學院成立滿十週年了!十年一遇的超值回饋,獻給堅持學習的你~
(03-12)
【2019下半年課程行事曆】政府+企業雙重補助,AI人才養成計劃開跑
(07-10)
IT TRAINING 2019上半年最新技術培訓一覽
(03-13)
[
more
]
最新消息
文件分類
[
總覽
]
廠商徵才資訊
(215)
學員專題成果
(31)
研討會活動專區
(5)
Android 專欄
(19)
活動簡報檔
(2)
線上教學 Training Video
(24)
韌體設計相關
(17)
Embedded LInux 專欄
(54)
Raspberry Pi
(4)
FPGA/Verilog 專欄
(14)
小品文章
(37)
未分類文件
(28)
101年 Android 應用軟體設計班
(4)
基礎C程式&資料結構
(8)
嵌入式Linux就業班第二梯次
(20)
101年臺北市政府勞工局職業訓練中心-Android APP 軟體開發人才培訓就業班
(16)
102年Linux網路工程師-LPI認證養成班
(9)
102年JAVA程式設計班
(2)
102年嵌入式軟韌體設計工程師養成班
(6)
Access VBA
(5)
Excel VBA
(4)
產業訊息
(2)
PCB Layout
(7)
電子電路
(6)
專班文件區
嵌入式Linux就業班第三梯次
(13)
社群資訊
訪客: 3178954
文章: 557
討論: 1315
公告: 31
容量: 剩餘
2.4 GB
(4 GB)
閱讀權限: 開放
分類:
教育學習 / 軟體系統
版主: 艾鍗學院
副版主: 無
位置:
艾鍗學院 Blog
>
專業論壇
>
討論
typedef問題
(Lance,
lancelotlee0921@gmail.com
, 2013-03-27 15:11)
1樓
Ealin老師在CH10-2中提到 typedef和#define的差別
#define 是作型別的替換
typedef 是定義一個新型別,
所以
typedef char *string_t;
#define string_d char *
string_t s1,s2;
string_d s3,s4;
當中, s3為 char * 型態,而s4則為char型態.
這邊觀念我都能理解.
但看到如下的程式時,就有些疑惑了
typedef char *pstr;
#include <stdio.h>
int main(void)
{
char string[4]="abc";
const char *p1=string;
const pstr p2=string;
p1++;
p2++; 出現編譯錯誤,
C:\my-devc\typedef.cpp increment of read-only variable `p2'
return 0;
}
請問,錯在哪呢?這邊的const pstr p2難道和const char *pstr p2是不一樣??
(joseph, 2013-03-27 23:07)
2樓
這是
Ealin 大黑狗老師,
特別去點出"細節",
很多人在寫 C , 也許都未曾注意過
typedef char *pstr;
const char *p1=string; // 宣告一個P1指標,去指向一個const char ,
// p1++ --> OK的, 但*p1='S' -->是不OK的
const pstr p2=string; // p2 被宣告成為一個 const,
// 如同 const int a=5;
你若認為
const pstr p2 就是
const
char *
p2, 代表你認為typedef 是define 的意思
int main(void)
{
char string[4]="abc";
const char *p1=string;
const pstr p2=string;
p1++;
p2++; 出現編譯錯誤, C:\my-devc\typedef.cpp increment of read-only variable `p2'
return 0;
}