1樓:匿名使用者
char*p="abc";
是在記憶體開闢4個位元組的儲存空間,依次存放'a' 'b' 'c' '\0' 4個字元
並把存'a'的那個位元組的位址 賦值給指標pchar*p ; 是說 定義乙個指向字元型資料的指標p指標p在記憶體中以 unsigned int資料型別存放 而非以char型別存放
*p=*(p+0)=p[0]
2樓:匿名使用者
指標指向內容被非法篡改,編譯出錯!
char* p = "hello",指標p指向的是常量字串,這裡的char* p相當於const char* p,第二行你更改了p指向的內容,當然報錯!
注:在vc++6.0中由於安全性不高,程式能執行,但這種設計理念是錯誤的。
建議多看看基礎的書!
3樓:匿名使用者
你char * p = "hello"; 這句話 就是 給p 賦了乙個常量的位址值
p 只是 指向了 hello 的儲存位址 你再 給p[0]賦值 就不對了
常量 字串 是說 字串 是乙個常量 常量是沒法更改的。
字元 型別裡面 包括了 字串型別
4樓:匿名使用者
常量字串型別,就是一旦賦值,就不得更改,如果再次賦值就會出錯;如:
char *p = "hello"; //p指向了常量字串的指標;
p[0] = 'a'; //這條語句就會錯;
const char symbol='a';
symbol= 'c'; //這條語句就會報錯;
char是字串型別,所以只能儲存字元,但char * p表示字串指標型別,所以可以儲存字串,就像 char str[20],p的型別等同於str的型別;
kutpbpb只能回答這麼多了,希望能對你有所幫助!
5樓:炒炒豆芽
1、char型別是字元型別,但儲存的是單個字元,儲存字串用字元陣列。
2、char *p = 「abc」:宣告字元型指標變數p,並將字串abc的首位址賦給p(即字元『a』的位址)。ps:p儲存的不是整個字串,而是「abc」的首位址。
3、執行p[0] = 'a',相當於將字元a賦給p[0](p為首位址,p[0]即字串第乙個字元h),即強制改變字串hello中的'h'值,但「hello」是字元常量。其值不能被改變。故出錯。
6樓:匿名使用者
這種方法字串常量儲存在記憶體的靜態區,不能更改,然後把首位址賦給p。
改成char p="hello";這個是在堆疊區申請的空間,賦值。可以更改。
c++整型指標賦值的問題
7樓:
p這個指標變數沒有分配儲存空間就開始向他指向的位址存值了,當然是錯的int *p=(int *)malloc(256*sizeof(int));//讓他指向一塊動態分配的記憶體塊就行了
或者int a[256]=;
int i,*p;
p=a;
for(i=0;i<256;i++)
這樣也行,讓p指向確定的陣列a
你動態分配的記憶體只能存乙個int,
p=(int *)malloc(sizeof(int));
改成p=(int *)malloc(sizeof(int)*256);
8樓:丁文博
你好,你應該通過malloc申請空間,或者是用陣列
現在你這樣p+i指向的是乙個未知空間,可能是系統需要用到的,不允許你更改內容,即使允許你這樣也是不對的,因為這個空間屬於這個程式,用它就是錯誤的。
9樓:匿名使用者
你只申請了乙個int的空間,卻操作了256個int,當然不對了
10樓:韓亭晚區溪
char*p="abc";
是在記憶體開闢4個位元組的儲存空間,依次存放'a'
'b''c'
'\0'
4個字元
並把存'a'的那個位元組的位址
賦值給指標p
char*p;是說
定義乙個指向字元型資料的指標p
指標p在記憶體中以
unsigned
int資料型別存放
而非以char型別存放
*p=*(p+0)=p[0]
c++的指標賦值問題
11樓:風若遠去何人留
假設 最原始的
old = 1
cur = 2
(當然實際位址不可能是 只是分析方便 假設的)那麼執行
usermap *p1 = old_user_map; //p1 = 1
old_user_map = cur_user_map;//old = 2
cur_user_map = 0;//cur = 0if (p1)
delete p1;//delete 1
也就是說 原始的old被釋放,執行後old為原本cur的值 cur為0
如果是c的話 沒有delete 需要用free, 效果是相同的
12樓:匿名使用者
關鍵是你執行第一條**前,old_user_map == cur_user_map ?
如果不等於,那你之後的第二條**就改變了old_user_map,雖然你 cur_user_map = 0 ,但是old_user_map 這個指標沒有被賦值為null,所以old_user_map 還是指向乙個記憶體區域的。
p1最後釋放了 old_user_map 最開始所指向的記憶體,而不是現在指向的記憶體,而且p1最後需要賦值為null。
C 的指標賦值問題,C 整型指標賦值的問題
假設 最原始的 old 1 cur 2 當然實際位址不可能是 只是分析方便 假設的 那麼執行 usermap p1 old user map p1 1 old user map cur user map old 2 cur user map 0 cur 0if p1 delete p1 delete...
c語言指標問題,C語言指標的賦值問題
因為一維陣列陣列名就是第乙個元素的位址,二維陣列,是 每個元素為一維陣列 的一維陣列,所以,int a 3 5 a就是乙個有5個int元素的一維陣列 a 0 的首位址。a i 就是a i 0 的位址,a i j就是a i j 的元素位址。這個簡單,看圖 a就是a 3 5 的首位址,也是a 0 的首位...
C 中指標的賦值操作,C C 指標變數怎麼賦值給普通變數。
你test函式中傳的是指標,你新建了乙個book物件p,賦值後,把p的位址給了head,但是這並沒有改變head所指向的book物件,也沒有改變head的位址 這和你傳乙個變數一樣,比如 void test int a a 1 你執行這個test後並沒有改變a的值,這個你的head p,是一樣的 指...
c語言的指標賦值問題
char p p才是指標,p是p指向位址的值。如果x是變數,x是取x的位址 p x 是往p指向的位址裡面存入x的值 p是指標,但實際上p也是乙個變數,只不過p裡存的是個記憶體位址 c語言哪來的引用!第乙個是p指向x的位址。即p中存放的是x位址的位址。也可以是正確的,但是很可能達不到你的預期目的在定義...
c 指標的問題
你的理解不對。你可以把指標也看做乙個變數,只不過是變數的型別是指標。int a 這句話意味著你定義了乙個變數a,a是乙個指標,而且a還沒有被賦值。也就是說a的值目前來說是不可知的,而指標是用來表示乙個位址的,也就是說a目前指向什麼位址,你是不知道的。a 10 這句話是說,為a所指向的位址,賦值吧。而...