1樓:匿名使用者
系統記憶體使用是作業系統規定的,如果你希望直接操作記憶體,就必須瞭解系統的記憶體的分配情況,否則造成的損失可能是致命的。你的舉例是不完整的,如果說*point_1=100是非法的,完整語句應該是int *point_1=100,之所以非法是因為100不是使用者可以操控的記憶體區域。*p = 1之所以數合法的,是因為將p所指的記憶體賦予整數1,例如int a;int *p = &a;*p = 1; // 等價於賦值語句a = 1,
2樓:匿名使用者
在某種場合,把常量賦給指標變數是可以的,例如:
int a=10, *p ;
printf("%d",&a);
在以上**輸出a的地址值之後,譬如:1244996以上程式可以改為:
int a=10,*p;
p=1244996;
printf("%d",*p);
輸出10
3樓:匿名使用者
*point_1=100; 將100賦值給point_1指向的地址。
4樓:匿名使用者
point-t 裡存放的是地址。。。
5樓:匿名使用者
初始化時不能,*p=1可以
在c語言中能否直接給指標指向的資料賦值?為什麼?
6樓:大野瘦子
可以,但int *p;*p=7;這樣不行。
因為“能直接給指標指向的資料”賦值,而這裡的p還沒有指向,所以不能賦值,這種指標有個名字叫“懸浮指標”,是不能給它賦值的。
這樣才可以:
int a,*p=&a;*p=7;
實際上就是使a等於了7。
注意事項
也可以使用賦值運算子為指標變數賦值,但要保證兩個指標變數的型別相同。
假設有如下變數定義:
int i,j,*p,*q;p=&i;q=&j;
這兩句將變數i和j的地址分別賦值給指標變數p和q;
執行了q=p後,執行該條語句,指標變數p和q都指向了同一個變數i,因此指標變數p和q中存放的都是變數i的地址&i。變數i此時並沒有初始化,只為其分配了記憶體單元。
注意理解:q=p;和*q=*p
前者為指標變數q賦值,即將指標變數p中存放的某個變數的地址賦值給q。顯然,賦值後,q和p就指向了同一個變數。
後者將p指向變數的賦值給q指向的變數。
例子:p=&i;
q=&j;
i=2;
j=3;
7樓:匿名使用者
可以直接給指標指向的資料賦值。
因為*p操作是這樣一種運算,返回p的值作為地址的那個空間的取值。存放地址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的地址。
在使用一個指標時,一個程式既可以直接使用這個指標所儲存的記憶體地址,又可以使用這個地址裡儲存的函式的值。
8樓:
能,一定能。但你int *p;*p=7;這樣不行。為什麼呢?
因為“能直接給指標指向的資料”賦值,而你這裡的p還沒有指向,所以不能賦值;這種指標有個名字叫“懸浮指標”,俗稱野指標,是不能給它賦值的。這樣才可以:int a,*p=&a;*p=7;,實際上就是使a等於了7。
9樓:在臨潮湖吃中餐的淺藍暹石
不行,因為你只是宣告瞭一個int型的指標,代表執行某一塊記憶體,可是並沒有說明到底是那一塊記憶體, 所以後面的賦值也是沒有意義的,7只是個存放在靜態儲存區的字面值,是不能這麼賦值的。
10樓:匿名使用者
只有字元指標可以,他會自動生成記憶體來儲存
11樓:匿名使用者
指標要指向一個合法的地址才可以賦值
12樓:超級旅行者
*p沒有指向記憶體,要先申請記憶體,可以這樣
#include
int *p = (int *)malloc(sizeof(int));
*p = 7;
printf("%d",*p);
為什麼不能將一個整數賦給一個指標變數?
13樓:99承情
因為指標變數所對應的是地址,而整數是存放在某個地址上的內容。二者不一樣。
對於指標變數如何程式:
int _integer = 0;
為求地址運算子, 指標用來儲存一些變數的地址
可以這樣訪問(*_pinteger) 得到 _pinteger這個整形指標裡面的值0;
指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的一個位元組稱為一個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元, 必須為每個記憶體單元編上號。
其中,*表示這是一個指標變數,變數名即為定義的指標變數名,型別說明符表示本指標變數所指向的變數的資料型別。
14樓:儲紹言揚
指標變數所對應的是地址,而整數是存放在某個地址上的內容。兩個自然不能混為一談。
c語言中可以給指標變數賦值常數嗎?
15樓:會飛的小兔子
1、申請了空間(在常量區),存放了字串
2、在字串尾加上了'/0'
3、返回地址,這裡就是返回的地址賦值給了p
字串常量"hello"出現在一個表示式中時,"hello"表示式使用的值就是這些字元所儲存的地址(在常量區),而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦值給一個字元陣列。
chara[10]=“hello”;//這樣可以,這種情況是c語言初始化所支援的,如果寫成chara[10],然後a=“hello”這樣就錯誤了。同樣是a陣列,chara[10]=“hello”;這種是陣列的初始化,和a[0]=‘h’a[1]=‘e’,是一個道理。
換成chara[10],然後a=“hello”就不行了“hello”賦值的值是一個地址,而a雖然也有地址,但是這與指標是不一樣的,指標的值是地址,而陣列的值雖然也是地址,但是卻是一個常量,所以不能給常量賦值。
擴充套件資料
c語言中給指標變數賦值常數注意事項
在使用指標的時候,指標可以自增,而陣列不能自增,編譯器給陣列分配了空間,陣列a的地址就是一個常量了,讓常量自增這肯定是不行的。 在指標自增的時候,編譯器會自動識別型別,比如指標是指向int型的,想獲取下一個的地址時,指標直接p++就行了。
特別需要注意的是,在void指標使用的時候,不能使用指標運算,應為void型編譯器不能識別型別的長度(即指標所指物件的體積),p++這樣就是不合法的,即不能進行數**算,也不能使用*取值操作,想使用必須轉換為其它的型別。
16樓:a羅網天下
如:char *p,a='5';
p=&a;
p="abcd";
解析:p申請了空間(在常量區),存放了字串,所以最後可以返回地址。
以字串形式出現的,編譯器都會為該字串自動新增一個0作為結束符,如在**中寫
"abcd",那麼編譯器幫你儲存的是"abcd\0"。
1、定義指標變數的一般形式如下:
型別名*指標變數名1,*指標變數名2,... *指標變數名n ;
2、空指標
空指標是一個特殊的指標,它的值是0,c語言中用符號常量null(在stdio.h中定義)表示這個空值,並保證這個值不會是任何變數的地址。空指標對任何指標型別賦值都是合法的。
一個指標變數具有空指標值表示當前它沒有指向任何有意義的東西。
3、void指標
(void *)型別的指標叫通用指標,可以指向任何的變數,c語言允許直接把任何變數的地址作為指標賦給通用指標。
但是需要注意void*不能指向由const修飾的變數,例如第三句是非法的,只有將ptv宣告為const void * ptv;,上述第三句ptv = &test才是合法的。
當需要使用通用指標所指的資料參加運算時,需要寫出型別強制轉換。如通用指標ptv 所指空間的資料是整型資料,p是整型指標,用此式轉換:p=(int *)ptv;
17樓:匿名使用者
賦值當然可以啊,不能用地址引用
舉例://int
int * p = new int;
*p = c_int_1; //這個是可以的,賦值p= c_int_1; //這個不可以,地址複製了//字串
char * p;
p = "abc"; //字串這樣就可以,因為這個常量編譯器自動賦予了空間
18樓:今天沒有睡
不可以 因為這是不可預見的 如果指到了你記憶體中的重要訊息,電腦可能會出問題啊,所以千萬不要賦常數給指標變數
19樓:匿名使用者
準確地說,只能賦值0,其他的都不合法
20樓:匿名使用者
不能,變數怎麼能賦值呢,變數時變化的不是一定值
21樓:匿名使用者
只有字元指標可以,直接等於字串常量
22樓:匿名使用者
不可以 指標變數只能指向地址
23樓:情漫都市
一般不允許。很可能系統報錯
24樓:匿名使用者
指標時用來存放地址的!地址就是個常數啊!所以這樣是能編譯通過的!
但是,這樣執行會出錯(段錯誤)的!因為指標本來是存放地址的,而你卻存放了一個常數(即一個不合法的地址),這樣就會使指標指向不確定的記憶體單元(非法訪問),從而出現錯誤!
c語言中,能將k賦值給m,n的語句為什麼是mk
邏輯與是左結合的,所以程式從左往右執行的哦 嘿嘿 是左結合運算,所以 m k n m 都 n m m k 是正確的 複製運算子沒有 運算子優先順序高。所以 n m m k 相當於 n m m k 這個就是優先順序的問題了。前者先分別算括號裡的然後再把兩個結果做與預算,也就是說專這個運算的是倆個括屬號...
c語言程式設計能不能編個顯示是iloveyou的圖案艾高
1 用字串輸出i love you main printf s st2 2 用井號拼出來 include stdio.h main int loop,loop2,loop3,tmp for loop 0 loop 8 loop else else tmp 2 putchar n printf end...
能不能用c語言寫微控制器at89c51實現秒錶的設計,有pro
首先肯定能實現,用內部計數器就可以,可以幫助你 你好!是 實現效果嗎?還是用的開發板?求一份基於微控制器at89c51計算器的proteus 設計的c語言源程式 和 電路圖最好原創 你弄好了沒,我要答辯了還沒弄好 574942051 qq.com求一份兒,謝謝了,畢個業不容易啊 我有一個基於80c5...