面試題總結 – C 語言 – 指標

面試題總結 - C 語言 - 指標 1. 嵌入式系統經常具有要求程式員去訪問某特定的記憶體位置的特點。 在某工程中,要求設定一據對地址為0x67a9的整形變數的值為0xaa66,編譯器是一個純粹的ANSI編譯器寫帶碼去完成這一任務。注釋: 這一問題測試你是否知道為了訪問一個絕對位址,把一個整形數強制轉換(ypecast) 為一個指標是合法的,answer:   int* ptr;ptr = (int*) 0x67a9;*ptr = 0xaa66;一個較晦澀的方法是:*(int* const) (

《c陷阱與缺陷》筆記–函數指標

本文轉載於:http://www.cnblogs.com/gmh915/archive/2010/06/11/1756067.html函數指標是指向函數的指標變數,即本質是一個指標變數。 int (*f) (int x); /* 聲明一個函數指標 */ f=func; /* 將func函數的首地址賦給指標f

面試題總結 – C 語言 – 位操作(bit operation)

1. 嵌入式系統總是要使用者對變數或寄存器進行位**作。給定一個整型變數a,寫兩段代**,第一個設定a的bit 3,第二個清除a 的bit3。在以上兩個**作中,要保持其它位不變。對這個問題有三種基本的反應 1). 不知道如何下手。該被面者從沒做過任何嵌入式系統的工作。 2). 用bit fields。Bit

深入理解C語言指標的奧秘-一篇很好的C指標教程

指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。   要搞清一個指標需要搞清指標的四方面的內容:指標的類型,指標所指向的   類型,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。    先聲明幾個指標放著做例子:     例一:     (1)int*ptr;     (2)char*ptr;     (3)int**ptr;     (4)int(*ptr)[3];     (5)int*(*ptr)[4];        指標的類型  

面試題總結 – C 語言 – 資料聲明(data declaration)

1.用變數a給出下面的定義a) an integerint a;b) a pointer to an integerint *a; c) a pointer to a pointer to an integerint **a;d) an array of 10 integersint a[10];e) an array of 10 pointers to integersint* a[10]; f) a pointer to an array of 10 integersint (*a)[10]

《c和指標》筆記-簡潔的二叉尋找樹刪除node方法

之前寫過一個二叉尋找樹,其中最麻煩的是刪除元素的方法,一共分了8種情況,主要是要區分是否是根節點和非根節點,寫的太煩了,詳細請參見:http://blog.csdn.net/todd911/article/details/8471566今天要來簡化一下這個方法,之前我還寫過一篇《簡潔的單項鏈表插入操作》,利用雙指標,簡化了根節點和非根節點的區別,詳細請參見:http://blog.csdn.net/todd911/article/details/8941593,其實在二叉尋找樹中也可以使用這種方

《c專家編程》筆記–alloca函數

alloca()函數用來在棧中分配size個位元組的記憶體空間,因此函數返回時會自動釋放掉空間。alloca函數定義及庫標頭檔如下:/* Allocate a block that will be freed when the calling function exits.  */extern void *alloca (size_t __size)

《c和指標》筆記–printf()用法

本文轉載於:http://hi.baidu.com/bali_bao/item/f90a4f76121b113a6dc37c4bprintf()用法詳解     一、printf()函數是式樣化輸出函數, 一般用於向準則輸出裝置按規定式樣輸出訊息。正在編寫步驟時經常會用到此函數。printf()函數的挪用式樣為:     printf("<式樣化字串>",<參量表>);    其中式樣化字串包括兩部分內容: 一部分是正常字元,

《c和指標》筆記–簡潔的單項鏈表插入操作

單項鏈表插入操作,我想應該是最基礎不過的東西,今天要介紹的是比較簡潔的版本。需求:插入一個node到鏈表的正確位置,當前鏈表中節點的value已經按照由小到大進行排列。傳統的插入操作:int insertNode(Node** rootp,int new_value){Node *current;Node *previous;Node *new;current = *rootp;previous = NULL;while(current != NULL &&

《c和指標》筆記–#line宏

宏#line改變_LINE_與_FILE_的內容,它們是在編譯器中預先定義的標識符。     基本形式如下:    #   line number [ "filename"]    其中的數字為任何正整數,可選的檔案名稱為任意有效檔案標識符。行號為來源程式中當前行號,檔案名稱為源檔案的名字。宏#line主要用於調試及其它特殊應用。#include <stdio.h>int main(void){ printf("%s %d\n",__FILE__,__LINE__);

《GLIB C MANUAL》–1.1.入門

1.1. Getting Started1.1. 入門 This manual is written with the assumption that you are at least somewhat familiar with the C programming language and basic programming concepts. Specifically, familiarity with ISO standard C (see ISO C), rather than

《c專家編程》筆記–sizeof

#include <stdio.h>#include <malloc.h>int main(void){ int *p; int *a; a = (int*)malloc(sizeof*p); *a=1; printf("%d\n",*a); free(a); return 0;}上面這段代碼,編譯運行都沒有任何問題。a =

《c專家編程》筆記–如何使用指派陳述式拷貝整個數組的值

將數組放到結構體中,直接使用“=”就能將數組中的值全部拷貝到其他相同類型的數組中。#include <stdio.h>struct array_tag{ int a[10];};int main(void){ struct array_tag m = {{1,2,3,4,5,6,7,8,9,0}}; int i; for(i=0;i<10;i++){ printf("%d ",m.a[i]);

《c和指標》筆記–宏插入到字串常量

方法一:#include <stdio.h>#define PRINT(FORMAT,VALUE) \ printf("the value is "FORMAT"\n",VALUE);int main(void){ int x = 6; PRINT("%d",x+2); return 0;}運行結果:the value is 8方法二:#include <stdio.h>#define

C#程式無法正確解析設定檔

  這是由我“無中生有”引起的問題,記錄下來或許對大家有協助。  我們的一個測試程式是用C#寫的,它會讀取一個設定檔,設定檔裡包含串口的設定或者網路IP/連接埠的設定。  我有一次淡疼的把這個程式改為了“Windows 2000相容模式”,在後來的使用中便發現這個程式無法正確解析設定檔。  具體原因已經超出我的能力範圍。我想和XP相容模式下對於程式運行環境的差異有關。  在native的XP下,程式有足夠的許可權訪問或申請它需要的資源;而Windows 2000相容模式下,作業系統為程式的運行“

C的一些入門常識

今天本來是周六,薄荷老大昨晚說來加一下班,正好可以來做這裡靜靜的看會書。昨晚去了書店買了3本書。一本C的 一本C++的一本EJB的。為了學好C++,我還是老實的從C開始學起來了。王猛大哥說每天最少看500行代碼,然後被類庫,測試我。感謝他們。上午看了一會書,學到了一些以前在JAVA中沒有特別去注意的東西,這些都是基礎的東西。先說一下學到的吧: 1:int 一般來說是長度為16位,也就是2個位元組,short int 也一般為16個位元組,long

c的關於數組初始化 和 memset用法

今天為了徹底搞定一個關於c中數組初始化和聲明不同情況下,比如只聲明一個數組char str[20];那麼這str裡面是什麼內容呢?我用vc6++,debug下看到都是-56餓asc碼,後來請教了一個華為的大牛,他說 按照理論來說裡面的內容都是有可能的,這和叫做“髒記憶體”或者叫做“野數組”。好了第一個問題搞懂了。 第二個問題

c語言中的 局部靜態變數 和全域非靜態變數

昨晚睡前看書的時候看到C語言裡面對變數的定義很有意思,比如auto static register extern這些關鍵字。 最感興趣的莫過於那個局部的static定義的變數。 根據書中描述局部static的變數 等價於 全域的非靜態變數。一般我們知道全域的變數在函數結束後再次調用的時候就會改變的,但是局部的靜態變數 總覺得這樣來很BT。經過驗證的確是這樣的效果。 看代碼:先來個局部的靜態變數 #include <stdio.h>int main(){int

標準C的標頭檔assert.h學習總結

1:類似junit的斷言,只是在assert中的斷言,如果不滿足的話就程式退出。比如#include <assert.h>int main(void){ assert(6 < 5); system("pause"); return 0;}在執行到assert(6 < 5);的時候因為不滿足斷言,於是程式退出。如果不想讓assert(6 < 5)起作用,就在最上面添加宏定義#define NDEBUG要添加在#include

關於c中對數組賦值的一個問題

數組賦值我總結一下吧也就三種,那char的來舉例: 定義的時候直接賦值.1:char a[20] = "Hello World!"; 2: char a[20];   strcpy(a, "Hello World!"); 3:char a[20] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; 常見錯誤賦值方式: 1:char a[20];   a = "Hello

總頁數: 4314 1 .... 2239 2240 2241 2242 2243 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.