C 給指標賦值的問題,C 整型指標賦值的問題

時間 2022-04-12 15:59:49

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所指向的位址,賦值吧。而...