如果要獲取內存地址,你上面那種函數獲取方法是錯誤的.函數中int *a僅僅是主函數變量ff的一個副本,ff當初沒有具體指明地址,傳遞給a也是不確定地址,a分配完畢,只是修改a自身指向,并不修改ff指向.所以用下面方法進行修改,采用返回地址方法
成都創新互聯公司專業為企業提供沈丘網站建設、沈丘做網站、沈丘網站設計、沈丘網站制作等企業網站建設、網頁設計與制作、沈丘企業網站模板建站服務,10年沈丘做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
#include stdio.h //包含頭文件
#include stdlib.h
int *array1(int x)//使用返回指針能正確分配內存地址
{
int *a;
a=(int*)malloc(sizeof(int)*x);
if(a==NULL)
exit(0);
for(int i=0;ix;i++)
*(a+i)=0;
return a;
}
void main()
{
int *array1(int x);//函數聲明與函數定義相一致
int *ff;
int sdof;//定義sdof
sdof=8;
ff = array1(sdof);
for(int i=0;isdof;i++)
printf("%d\n",*(ff+i));
}
數組大小定義在編譯連接階段就已經決定了,所以你不能在程序執行的時候,采用動態賦值的方法來決定數組大小。
如果想要動態定義一個指定大小的內存,可以采用malloc或者realloc的函數來進行分配。
比如我們可以int a =XXXX之類,然后malloc(a)分配xxxx個字節大小的內存使用。
C語言可以通過宏,在你需要的位置宏展開出一個新的函數。
例如:
#define XXX(funcname) \
int funcname (int arg1, int arg2) \
{ return arg1 + arg2; }
但這也是編譯期就決定好了的,也不能實現運行期動態創建。
新聞名稱:動態定義函數c語言 動態定義函數c語言有哪些
當前URL:http://m.kartarina.com/article42/hiisec.html
成都網站建設公司_創新互聯,為您提供App開發、靜態網站、小程序開發、自適應網站、網站收錄、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯