色爱av综合网_色女人在线视频_男男gaygays亚洲_日本高清久久一区二区三区

購(gòu)物車0種商品
IC郵購(gòu)網(wǎng)-IC電子元件采購(gòu)商城
指針啊指針問(wèn)題。
(2011/10/13 9:59:00)
問(wèn)題:
1、int*p=NULL;
*p=100;
NULL是一個(gè)宏定義,定義如下:#defineNULL0
我這樣理解:第一句句的意思是定義指針變量p,p指向0x0000這個(gè)地址,第二句的意思為給0x0000這個(gè)地址賦值為100
2、假如我現(xiàn)在想讓p指向0x0010這個(gè)地址并賦值為100,為什么我這樣寫會(huì)出錯(cuò):
int *p=0x0010; *p=100;

但改成如下int *p=(int *)(0x0010);*p=100;這樣編譯后測(cè)試正確。

從道理上講,int *p=0x0010;應(yīng)該也是可以的把?為什么寫成NULL就可以,寫成0x0010就不行?!

網(wǎng)友評(píng)論:
回19樓。加上* const p試試。C51 正確。

void main()
{
int data *constp=0x0010;
*p=100;

while(1);
}


有書上講。《C語(yǔ)言詳解》指針部分。
冷漠 發(fā)表于 2009-8-19 17:47
------------------------------------------------

經(jīng)過(guò)測(cè)試,編譯通不過(guò),測(cè)試的編譯器是PICC和IAR,都提示錯(cuò)誤。

網(wǎng)友評(píng)論:CONST只表示是一個(gè)不變化的常量,但沒(méi)有規(guī)定是否一定放在ROM區(qū),也可以放到RAM區(qū)的。

網(wǎng)友評(píng)論:

書上(關(guān)于ANSIC)講得很清楚了: --摘自《C語(yǔ)言詳解》P256指針初始化
......
指針對(duì)象一般不要初始化為除0之外的(注意包括除NULL之外的--冷漠注)其它整數(shù)值(直接量),例如,一般不要使用說(shuō)明:
int *pi=10000; // 冷漠注:如若允許,那么 int *pi=10001; 也被允許?--不在整數(shù)邊界。
因?yàn)閺?0000號(hào)地址開(kāi)始的若干個(gè)字節(jié)中并不一定剛好就分配給一整數(shù)對(duì)象。但也有一些特殊情況除外,比如要存取某個(gè)存儲(chǔ)單元的內(nèi)容時(shí)。(冷漠注:存取某個(gè)(單個(gè))存儲(chǔ)單元....)
.............
為安全起見(jiàn),在說(shuō)明一個(gè)指針對(duì)象時(shí)最好將它初始化為一個(gè)確定的值。如果在說(shuō)明它時(shí)還不能確定它所指向的是哪個(gè)對(duì)象或函數(shù),那么可以把它初始化為NULL(即0)。例如:
longint *pli=NULL; // 終于找到出處了。--冷漠注。

在說(shuō)明全局指針變量(extern)和靜態(tài)指針對(duì)象(static)時(shí),若未帶初始化部分,則這些指針對(duì)象的值均被(編譯器)初始化為NULL。但對(duì)于局部指針對(duì)象,在說(shuō)明時(shí)若未帶初始化部分,則該指針對(duì)象的值是不確定的,即必須在說(shuō)明時(shí)顯式指明其初值,其后再具有確定的值。

一個(gè)指針的取值范圍應(yīng)為機(jī)器所有可用內(nèi)存的地址,但并不是所有內(nèi)存地址都可以作為任一指針變量的值。(注意這里的概念。--冷漠)。指針對(duì)象的值 必須是屬于該指針變量指向?qū)ο蟮念愋偷哪硞(gè)對(duì)象的地址。例如:一個(gè)指向整數(shù)類型的指針值不得是分配給一個(gè)浮點(diǎn)類型對(duì)象的內(nèi)存單元的首地址。(所以LZ必須指明0x0010這個(gè)首地址屬于何種(存取)對(duì)象類型。--冷漠)。
因此,指針變量可取的值是隨著實(shí)現(xiàn)的不同、執(zhí)行的不同而有所不同。

每一種類型的指針變量都有一個(gè)特殊的值NULL。NULL是一個(gè)定義在頭文件stddef.h中的宏,用于定義一個(gè)空指針。空指針表示指針不指向任何位置(而不是LZ 理解的指向0地址。)NULL實(shí)際上是一個(gè)整數(shù)常量,其值為零(理解為空值)。NULL值是有別于指向具體對(duì)象的指針值的特殊值(空指針標(biāo)識(shí)符)。

——以上摘自《C語(yǔ)言詳解》


至此概念講的已經(jīng)很清楚了。若要說(shuō)明一個(gè)指針初值,先要有一個(gè)具體類型的對(duì)象(以指向)。例如:
inta; //對(duì)象說(shuō)明在先。
int*ptr=&a; //指針初始化在后。

但是如若在指針說(shuō)明時(shí)還沒(méi)有任何對(duì)象所指向,--像LZ那樣,那么可以初始為空值,即:
int*ptr=NULL; // 并非指向0地址。NULL是不能作為實(shí)際指針使用的空指針值。
如若希望像LZ那樣把RAM地址0x0010 說(shuō)明為指向int變量的指針,則可以在初始化之后,在程序中定義:
ptr=(int *)0x0010;
或者在說(shuō)明初值時(shí),指明(未來(lái)對(duì)象)地址類型:int *ptr =(int *)0x0010; // C51int data *ptr =0x0010;已經(jīng)足夠信息。

網(wǎng)友評(píng)論:嚴(yán)格按照規(guī)則的寫法:

#include <stddef.h>

void main()
{
int data *p=NULL;
p=(int data *)0x0010;

*p=100;
while(1);
}

應(yīng)該在所有編譯器下通過(guò)。

網(wǎng)友評(píng)論:好貼

瀏覽:(655)| 評(píng)論( 0 )
博文評(píng)論

  • 昵 稱:
  • 內(nèi) 容:10~250個(gè)字符
  • 驗(yàn)證碼: 驗(yàn)證碼看不清楚?請(qǐng)點(diǎn)擊刷新驗(yàn)證碼
  •                      
  • 博文分類

    熱點(diǎn)博文

    最新博文

    最新評(píng)論

    IC電子元件查詢
    IC郵購(gòu)網(wǎng)電子元件品質(zhì)保障

    主站蜘蛛池模板: 黎城县| 介休市| 增城市| 白沙| 会东县| 铜梁县| 皋兰县| 乐陵市| 铜梁县| 玉树县| 肃北| 高密市| 开平市| 台江县| 舟曲县| 庆城县| 平定县| 怀仁县| 兴海县| 绍兴县| 金湖县| 二连浩特市| 南昌市| 巧家县| 东平县| 呈贡县| 五河县| 新兴县| 延津县| 广汉市| 乡宁县| 弥渡县| 治多县| 博乐市| 商南县| 隆尧县| 临潭县| 巴中市| 三门峡市| 宜阳县| 措勤县|