當前位置:首頁 » 編程語言 » c語言回退指針
擴展閱讀
c語言中j2什麼意思 2022-08-13 02:41:09

c語言回退指針

發布時間: 2022-08-06 09:18:38

c語言 函數返回數組指針

由於你在子函數int *shuzu(void)中定義的數組 a[4];屬於局部變數,在子函數結束時會被釋放,所以返回的指針變成野指針,會亂碼;簡單的解決方法有兩種,1. 將數組定義在主函數之前(#include <stdio.h>下面),那麼就變成了全局變數,不會被釋放了;2.使用malloc或者calloc開空間後再賦給這個數組,這樣也不會被釋放了;第一種方法有缺點,以後學到全局變數的時候會知道,第二種方法估計你還沒學到,不過很簡單,網路一下就會了~~~

Ⅱ C語言中函數返回指針的問題

內存被釋放,不一定馬上被用作其他功能.
即使被使用, 也未必馬上被修改值.
所以 輸出結果為100是正常的. 只是概率性問題.
實際編程中為了穩定性 不應有此類操作.

Ⅲ C語言怎麼讓一個函數返回指針

這種方式叫做「用指針函數*creat()的返回值來傳遞動態內存」,這是一個C語法

首先你要注意,子函數*creat()用了malloc動態申請內存,而return返回的是指針變數所指向的地址,而不是指針!相當於將你所申請的動態內存返回給主函數

int *fun(void)//這里是指針函數
{
int *p = (int *) malloc (int);//動態申請內存//p在這里指向了一塊合法內存的地址
return p;
}

void main(void)
{
int *q = NULL;
q = fun();//fun()返回指針p所指向的地址,(指針p是在棧上創建的,所以*fun()函數運行完,指針所分配的內存被系統自動釋放)這時q指向p,得到了malloc所申請到的內存
free(q);//釋放動態內存
}

Ⅳ c語言中如何做掃描指針回退一個字元

char *p;
p=p-1; 就回退一個字元

c語言指針是有類型的,只有字元型指針,才能指向字元。字元型指針指向地址減1,就回退一個字元。
例如:
char str[]="abcd1234xyz";
char *p;
p=&str[4];
printf("%c",*p); //打出 1
p=p-1;
printf("%c",*p); // 打出 d

Ⅳ C語言程序怎樣返回指針位置求高人指點

不明白你說的什麼意思。。。
返回指針注意不要返回局部變數的地址就可以了。。
char *fuction()
{
char buf[10]="abcdef";
return buf; /* 這種形式是錯誤的 */
}

char *fuction1()
{
char *buf = (char *)malloc(10*sizeof(char));
return buf; /* 這種形式就可以 但是要自己釋放分配的內存 */
}
//.....
char *pstr = fuction1();
//.............
if(pstr) {
free(pstr);
}

Ⅵ C語言函數返回指針

第二種方法,跟第一種只是參數和返回值不同而已。
初看時需要在第二種中申請內存返回出來,但是字元串為局部變數時其實也是存在靜態內存中的,不會因為函數退出而失效,直接將函數內拼裝的字元串返回出來也是可以的,你也可以加上static定義什麼的也沒問題。

Ⅶ C語言寫文件,文件指針回退後,如何停止文件

fclose()就可以關閉文件了。停止文件好像沒這個說法。

Ⅷ C語言指針返回問題

1.返回函數裡面局部變數的地址,而函數結束後,該地址就釋放掉了,所以在函數外訪問、修改該地址都是非法的,結果不可知
2.指針為野指針,然後向野指針賦值(*ptr=10),非法訪問,結果不可知,容易崩潰,切函數返回的也是野指針
3.函數內申請動態內存空間,函數結束,該內存空間不會釋放,函數返回該內存空間地址,外部可以使用,但外部需要手動釋放該空間(free(動態內存空間地址))

Ⅸ C語言 函數返回指針

首先,說一下第一個問題,第一個不交換是因為定義的k是一個指針,指針說白了就是一個指向,我指向你,他指向她,然後換成我指向她,他指向你,你把他們指向的位置交換,而並沒有交換他們地址裡面存儲的值,這樣是並沒有任何區別,在最後函數結束之後,函數的那些指針指向全部釋放,和修改不修改沒什麼兩樣;定義的是一個整型變數,他把s
指針指向的地址裡面的值與
t
指針指向的地址的值進行了交換,這樣就修改了內存裡面的值,即便是函數結束了也不會釋放,自然就能做到交換了。
第二個問題,存儲地址是會釋放,但是釋放的是函數內部定義的局部變數,現在你已經把s的地址通過return
返回回來並且存在
主函數的
r
中了,所以自然就不會釋放了

Ⅹ c語言 函數返回指針

你寫錯了,正確的應該是如下兩種:
int *a(int, intint)

int (*a)(int ,int)
這兩種形式第一種表示返回一個指向整形變數的指針,第二種為指針指向一個含有兩個整形變數參數的函數。