1樓:網友
int locateelem(sqlist l,elemtype e,status(*compare)(elemtype,elemtype));
整個表達一下:乙個名為locateelem的函式,返回值為帶肢巨集int型,它有三個引數,sqlist型,elem型,其實最後乙個引數的意思是乙個指向函式的指標,指標指蠢冊向的函式返回值為status型,有飢吵兩個elem型引數。status(*compare)(elemtype,elemtype)其實這個就是傳說中的**函式;具體自己一下就知道了。。
**函式!這個(*p).length和有什麼區別?
p).length和和p->length代表的意思是一樣的,都是指向了結構體成員。其實書上有很詳細的講解。你需要仔細看。
全部手打!
2樓:匿名使用者
你說對了。這州鬧前就是典彎鋒型冊清的指向函式的指標的定義方法。
status(*compare)(elemtype,elemtype)很怪啊?
如果寫成。status f (elemtype, elemtype)這樣看沒問題吧?
現在(*compare)其實就是代表原來那個f。
3樓:網友
建議樓主回頭拿起書本把指標那章再好好看看,再去看資料結構。
4樓:網友
不理解你想知道什麼"區別」, 這兩個不是指的東乙個物件 ,*p不一定有效而後者有效。
c語言指標問題?
5樓:聽不清啊
呼叫結束後,所有實際引數的值均不會發生變化。但是swap3中*pa,*pb發生的交換(實際就是主函式中a和b的值發生了交換)
6樓:百好佳
被調函式修改主調函式內變數的值只能通過傳遞位址,因為被調函式在壓棧的時候會建立自己的變數和主調函式內需要修改的變數不是乙個儲存單元,所以不能修改主調函式內變數的值。
1、被調函式swap1形參為(*ptr1,*ptr2),此時兩個形參不是位址是變數a和b的值,被調函式swap1壓棧的時候會從新建立三個變數 x、y、w,所以a和b的值沒有被修改。
int *p;
p = p1; p1 = p2; p2 = p;
此時p1記憶體放的是變數a的記憶體單元首位址,p2記憶體放的是變數b的記憶體單元首位址,互相交換的位址值。並沒有修改主調函式中變數a和b的值。
int p;
p = *pa; *pa = *pb; *pb = p;
pa = 主調函式內變數a的值 = 5,*pb = 主調函式內變數b的值 = 7;此時修改*pa或者*pb的值就是再修改主調函式內變數a和b的值;
c語言指標問題
因為我的數字很大,用指標的話效率高。這句話不對啊,數字大小和運算時間沒有必然聯絡,比如100乘以101和1000乘以1001的運算時間是一樣的。另外,現代的編譯器優化能力非常強,不必什麼都得自己去優化。你的 就是一個例子。void main int pa 3 a for int k 0 k 2 k ...
c指標的問題
首先,在指標定義時規定了ip是一個指向整形的指標,但是int ip 3 這句話讓ip指向3號地址塊,但是3號地址塊裡的內容是不確定的,所以是錯誤的 int ip 3 是不是這一步驟有問題?指標初始化不能這樣幹!include void main 這就對了。這時候ip指向a,而原先ip是指向3,而3是...
關於指標方面的,指標的作用是什麼啊?
s 指的是 指標s 所指向位址裡面的 內容,這和 r p意思是一樣的。while s 指的是字元指標 s 所指向的內容為真 則 執行while 迴圈內容 if r p 如果 指標r所指向內容和指標p所指向內容 字元,因為這裡定義的是字元指標 相等,則指標變數r和p的位址加上乙個單位偏移量,如果是字元...