1樓:風雷九州
*p = a;
這是什麼賦值方法?字串之間的賦值要用memcpy,memcpy(p,a,100);
如果只是單純的*p = a的話,p是char *型別,*p就是char型別,而a是一個int *型別,即一個地址,地址一般使用32位資料來儲存(64位機器使用64位資料儲存)。這麼賦值的話,*p並不是a的地址,而是a的地址中的一個8位元組。
然後使用printf("memory allocated at: %s",*p);,列印*p,*p不是a的地址,那肯定會崩潰的。
兩種寫法。使用memcpy賦值。
char n='a',*p=&n;
char a[100]="ajdskls";
p=(char *)malloc(100);
//*p=a;
memcpy(p,a,100);
if(p)
//printf("memory allocated at: %s",*p);
printf("memory allocated at: %s",p);
else
printf("not enough memory!\n");
free(p);
system("pause..");
p寫成int *才可以。
char n='a',*p=&n;
char a[100]="ajdskls";
p=(char *)malloc(100);
*(int *)p=a;
if(p)
printf("memory allocated at: %s",*(int *)p);
else
printf("not enough memory!\n");
free(p);
system("pause..");
補充,這種寫法用c語言的編譯器還可以編譯通過。
如果使用c++的編譯器,是不會編譯通過的。
error c2440: '=' : cannot convert from 'char [100]' to 'char'
2樓:寒寒家
//看不明白你code的邏輯
為什麼 p=(char *)malloc(100);//給p分配記憶體之後,又做
*p = a;?
如果想讓p指標,指向陣列a的話:應該 p = a;就可以了,而且不用上面的malloc分配記憶體。
如果是想動態的分配記憶體,那麼就malloc就足夠了,也就不用p = a;
另外只有malloc之類的申請的堆上的記憶體,才可以free。
而char a[100]這樣的陣列,不能free。
c語言 為什麼輸入之後沒有沒有輸出結果?
3樓:yx陳子昂
你這個while死迴圈了,while(i<=n);這裡分號表示語句結束,i用於<=0就在這裡死迴圈。
裡面 的**也有問題,
if(r=0)這裡永遠返回false,應該是if( r == 0 )為了避免這種錯誤,我們一般這麼寫 if(0 == i) 這樣一旦寫錯編譯就報錯了。
4樓:陽光的早晨飛吧
你好!發現你的程式裡面有一個致命錯誤:
while (i<=n)後面你用了;
去掉這個;就行了,你試試
如果我的回答幫到了您,請採納我的回答,謝謝!
為什麼我執行c語言後,顯示不到結果?
C語言程式,沒有錯誤,但是執行不出來
stu n num malloc 10 sizeof char 錯誤,malloc返回void 型指標,必須在malloc前加強制轉換操作變為與stu n num相相容的型別。stu n nam malloc 5 sizeof char 錯誤,同上。scanf d t 是啥東西? 成員變數的指標使用...
c語言中printfn輸出是什麼結果
printf n 是個換行,n是轉義字元,表示換行printf d a 完整應該這麼用,a是你要輸出的變數名。d是個佔位符,它為一個int型資料站位,一個printf中可以有多個佔位符。如 printf d d f x,y,z f也是佔位符,它為float型資料站位,佔位符的對應關係是順序對應的,即...
為什麼種草莓吸不出來,為什麼種草莓吸不出來
李學娘 種草莓就是情侶們在親熱時,激情所致而留的愛的痕跡。形成原理類似於拔罐子,用上下牙齒輕咬住一小塊 吸氣深嘬,像吃果凍那樣,將對方的肉吸進嘴裡。力度不一樣,吻痕的顏色將從粉紅色至深紫色不等。這樣就在脖子上留個吻痕,也就是種草莓的技巧。種草莓的部位 一般種草莓常見的部位是胸前 脖子上 肩膀上 背部...