你沒在最后添加結束符'\0',修改如下

創新互聯是一家集網站建設,雷山企業網站建設,雷山品牌網站建設,網站定制,雷山網站建設報價,網絡營銷,網絡優化,雷山網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
#include stdio.h
#include stdlib.h
int main()
{
char *p1,*p2,*p3;
char *p=(char*)malloc(1000000);
p1=p;
p2=p;
p3=p2;
gets(p1);
while (*p1!='\0')
{
if(*p1!=' ')
{
*p2=*p1;
p2++;
}
p1++;
}
*p2='\0'; //加上這一句,添加字符串結束符
puts(p3);
return 0;
}
————————————————————————-
這種輸出又不是沒用過,沒問題的,可以把代碼貼上來,我試試
————————————————————————————
輸出時用p3啊,
puts(p3);
或用printf也可以
——————————————————————————
汗,你聲明一個char *p3,處理前讓p3=p2不就行了
返回地址是可以,但是要知道返回后那個變量還在不。
如:
int globalValue;
int *fun1()
{
return globalValue; //返回全局變量的地址,可以
}
int *fun2()
{
static int staticValue;
return staticValue; //返回表態變量的地址,可以
}
int *fun3( int a )
{
return a; // 返回參數的地直,返回后這個參數已不存在了
}
int *fun4( )
{
int a ;
return a; // 返回局部變量的地直,返回后這個變量已不存在了
}
p是指向局部變量的指針,當函數退出時,局部變量會被釋放,這時,p所指向的位置就不一樣是原來的數。
因為fun()函數返回的值被計算機的臨時變量存放,當賦值給p的時候,p是指向臨時變量的地址,所以還可以讀取出100。
*p = "hello"這是常量字符串,從靜態存儲區分配,第一步字符串"hello"從靜態存儲區獲取一塊內存,指針變量p才指向這塊靜態內存,這塊內存的特點是從程序開始到結束一直從在,所以可以返回。
擴展資料:
函數的返回值類型是在定義函數時指定的。return 語句中表達式的類型應與定義函數時指定的返回值類型一致。如果不一致,則以函數定義時的返回值類型為準,對 return 語句中表達式的類型自動進行轉換,然后再將它返回給主調函數使用。
在調用函數時,如果需要從被調函數返回一個值供主調函數使用,那么返回值類型必須定義成非 void 型。此時被調函數中必須包含 return 語句,而且 return 后面必須要有返回值,否則就是語法錯誤。
參考資料來源:百度百科-返回值
本文名稱:c語言函數返回內存地址 哪個函數可以返回變量的內存地址
本文網址:http://www.js-pz168.com/article42/dohiehc.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、關鍵詞優化、動態網站、外貿建站、定制網站、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯