C專家編程 Expert C Programming

來源:互聯網
上載者:User

標籤:io   strong   檔案   ar   問題   div   amp   size   

該書中一些思想還是比較有用的,但隨著編譯器以及規範的變化,書中有些內容已經發生了變化,以下是實踐之後的一些總結。

1 - typedef int x[10] 和 define x int[10]  區別

define 定義為變數替換,而typedef為聲明替換;

#define peach int;

unsigned peach i;  //wrong

typedef int banana;

unsigned banana i; //wrong

聲明替換用typedef

識別數組和函數指標

e.g:int const * zero;                              //zero是一個指標,指向一個常量整形char (*zero)[20];                           //zero是一個指標,指向一個有20個char元素的數組typedef void (*ptr_to_func)(int);     //ptr_to_func是新類型名,這種類型是一個函數指標,指向接收一個int參數,並返回void的函數char* const * (*zero)();               //zero是一個函數指標,該函數無參數,並返回一個指標,返回的指標指向一個常量指標char* (*zero[10])(int **p);          //zero是一個數組,元素是函數指標,其指向的函數授受一個二維指標,並返回一個指向char的指標void (*signal (int sig, void (*func)(int)))(int);     //signal是一個函數,該函數接收一個int,一個函數指標,並返回一個函數指標 2- signal , longjmp , setjmp 

#include <signal.h>
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
void handler(int s) {
if(s==SIGSEGV) printf("now got a segmentation violation signal\n");
longjmp(buf,1);
}
int main() {
int *p = NULL;
signal(SIGSEGV,handler);
if(setjmp(buf)){
printf("back in main\n");
return 0;
} else {
printf("nothing\n");
}
*p = 0;
loop:
goto loop;
return 0;
}

3 . 數組和指標

數組a[10],則a和a [0]的地址等價;

#include <stdio.h>
int b[]={1,2};
int main() {

int a[10];
int *p = a;

printf("p %x \n",&p);
printf("&a %x\n",&a);
printf("&a[0] %x\n",&a[0]);

printf("&b %x\n",&b);
printf("&b[0] %x\n",&b[0]);
printf("%d\n",*b);

printf("%d\n",sizeof(a));
return 0;
}

結果:

p bfc4ca7c
&a bfc4ca54
&a[0] bfc4ca54
&b 804a014
&b[0] 804a014
1

40

4. 如果確定一個變數是有符號數還是無符號數?

#define ISUNSIGNED(a) (a>=0 && ~a > 0)

5.從檔案中隨機提取一個字串

依次讀取檔案,然後與儲存的字串進行選擇,則假設取到第N個,則以儲存N-1個,則當前機率和為1/N,而儲存的每個機率也為1/N。

6. 有趣的問題:如何用氣壓計量器測量建築物的高度? 

要學會聚焦,問題是測量建築物高度,然後用到氣壓計量器就可以了。。。  方法很多了

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.