C語言為什麼我的結果輸出不出來,C語言 為什麼輸入之後沒有沒有輸出結果?

時間 2022-05-19 12:35:05

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型資料站位,佔位符的對應關係是順序對應的,即...

為什麼種草莓吸不出來,為什麼種草莓吸不出來

李學娘 種草莓就是情侶們在親熱時,激情所致而留的愛的痕跡。形成原理類似於拔罐子,用上下牙齒輕咬住一小塊 吸氣深嘬,像吃果凍那樣,將對方的肉吸進嘴裡。力度不一樣,吻痕的顏色將從粉紅色至深紫色不等。這樣就在脖子上留個吻痕,也就是種草莓的技巧。種草莓的部位 一般種草莓常見的部位是胸前 脖子上 肩膀上 背部...