Time of Update: 2018-12-04
#include <stdio.h>#include <stdlib.h>int main(void){ int i=0,j=0; i++ = 10; ++j = 10; return EXIT_SUCCESS;}上面的編譯時間會出現一下錯誤:aplus2.c:6:6: error: lvalue required as left operand of assignmentaplus2.c:7:6: error:
Time of Update: 2018-12-04
本文轉載於:http://www.cnblogs.com/gmh915/archive/2010/06/11/1756067.html函數指標是指向函數的指標變數,即本質是一個指標變數。 int (*f) (int x); /* 聲明一個函數指標 */ f=func; /* 將func函數的首地址賦給指標f
Time of Update: 2018-12-04
本文轉載於:http://www.cnblogs.com/liuxiaoming/archive/2012/08/13/2636831.html某些C編譯器允許嵌套注釋。請寫一個測試程式,要求:無論是對允許嵌套注釋的編譯器,還是對不允許嵌套注釋的編譯器,該程式都能正常通過編譯,但是這兩種情況下程式執行的結果卻不同。首先,要說明的是C90隻有一種注釋風格,就是使用“/*”和“*/”,是沒有//注釋符號的。在預先處理階段,C前置處理器會剔除所有出現在“/*”和“*/”之間的內容(包括這對記號本身),
Time of Update: 2018-12-04
下面的代碼,大家猜下結果分別是多少?#include <stdio.h>int main(void){ int i=1; int* cp = &i; printf("%d\n",++*cp++); return 0;}#include <stdio.h>int main(void){ int i=1; int* cp = &i; printf("%d\n",+
Time of Update: 2018-12-04
#include <stdio.h>int main(void){ int a = 2; a >> 32; a >> -1; a << 32; a << -1; return 0;}上面代碼編譯時間出現如下錯誤:yiwei.c: In function 'main':yiwei.c:5:2: warning: right shift count >
Time of Update: 2018-12-04
1.Introduction1.介紹The C language provides no built-in facilities for performing such common operations as input/output, memory management, string manipulation, and the like. Instead, these facilities are defined in a standard library, which you
Time of Update: 2018-12-04
#include <stdio.h>int main(void){ int a[2][3]; printf("%p\n",a); printf("%d\n",sizeof(a)); printf("%p\n",a+1); printf("%d\n",sizeof(a+1)); printf("%p\n",*(a+1)); printf("%d\n",sizeof(*(a+1)));
Time of Update: 2018-12-04
如果要自己實現一個擷取絕對值的函數,應該都沒有問題,我這邊也自己寫了一個:void myabs(int i){ if(i>=0){ printf("%d\n",i); }else{ printf("%d\n",-i); }}但是,這個函數真的沒有問題嗎?如果i的值為-2147483648,會怎樣,我們來試下:#include <stdio.h>void myabs(int i)
Time of Update: 2018-12-04
#include <stdio.h>//獲得最小公倍數int doLCM(int* array,int size){int x,y,temp,gcd=array[0],i,result=1;for(i=0;(i+1)<size;i++){x=gcd;y=array[i+1];//保證x>yif(x < y){ temp = y; y = x; x = temp;
Time of Update: 2018-12-04
八皇后問題是一個以國際象棋為背景的問題:如何能夠在 8×8 的國際象棋棋盤上放置八個皇后,使得任何一個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上。一共有92種答案。c代碼實現如下:#include <stdio.h>#define SIZE 8static int board[SIZE][SIZE];void insertQueue(int row);void displayQueue();int checkConflict(int
Time of Update: 2018-12-04
VA_LIST
Time of Update: 2018-12-04
很多庫函數,特別是那些與作業系統有關的,當執行失敗時會通過一個名稱為errno的外部變數,通知程式該函數調用失敗。下面的代碼利用這一特性進行錯誤處理:errno = 0;//*調用庫函數*/if(errno)
Time of Update: 2018-12-04
書中有如下描述:\ddd ddd表示1~3個八位元字,這個轉義符表示的字元就是給定的八進位值所代表的字元\xddd 與上例類似,只是八位元換成了16進位數。注意,任何十六進位數都有可能包含在\xddd序列中,但如果結果值的大小超過了表示的字元範圍,其結果就是未定義。問題:為什麼直說了\xddd呢,那\ddd,如果超過了表示字元的範圍,會怎樣呢。於是做了如下測試:#include <stdio.h>int main(void){ printf("\x123456\n")
Time of Update: 2018-12-04
直接上代碼:#include <malloc.h>#include <stdio.h>int main(void){//使用者輸入的值,建立n*n的矩陣int n;//蛇形從1開始計數int count = 1;//a[x][y],x是二維數組的第一個下標,y是第二個。//round是蛇形矩陣的第幾圈,從0開始。int x,y,round;scanf("%d",&n);int (*a)[n] =
Time of Update: 2018-12-04
strsep和strtok是c語言中對字串進行分割的函數,關於具體用法本篇不做詳細說明。這裡只說明下2個函數的不同和相同之處。1.strsep淘汰strtok註:摘自Linux核心2.6.29,說明了這個函數已經不再使用,由速度更快的strsep代替。 /* * linux/lib/string.c * * Copyright (C) 1991, 1992 Linus Torvalds */ /* * stupid library routines.. The optimized
Time of Update: 2018-12-04
本文轉載於:http://blog.sina.com.cn/s/blog_6f5c63ff0100tucb.html我們知道,在不同的語言中,對負數執行模數運算,結果有可能會是不同的。例如,(-11)%5在python中計算的結果是4,而在C(C99)中計算的結果則是-1。truncate除法 &&
Time of Update: 2018-12-04
C99規定int、unsigned int和bool可以作為位域類型。但編譯器幾乎都對此作了擴充,允許其它類型類型的存在。如果結構體中含有位域(bit-field),總結規則如下:(以下代碼在x86 32bit系統上測試,gcc 4.1.2)1) 如果相鄰位域欄位的類型相同,且其位寬之和小於類型的sizeof大小,則後面的欄位將緊鄰前一個欄位儲存,直到不能容納為止例:struct test1 { char a : 2; char b : 3; char
Time of Update: 2018-12-04
宏#line改變_LINE_與_FILE_的內容,它們是在編譯器中預先定義的標識符。 基本形式如下: # line number [ "filename"] 其中的數字為任何正整數,可選的檔案名稱為任意有效檔案標識符。行號為來源程式中當前行號,檔案名稱為源檔案的名字。宏#line主要用於調試及其它特殊應用。#include <stdio.h>int main(void){ printf("%s %d\n",__FILE__,__LINE__);
Time of Update: 2018-12-04
const char*, char const*, char*const的區別問題幾乎是C++面試中每次都會有的題目。 事實上這個概念誰都有,只是三種聲明方式非常相似很容易記混。 Bjarne在他的The C++ Programming Language裡面給出過一個助記的方法: 把一個聲明從右向左讀。 char * const cp; ( * 讀成 pointer to ) cp is a const pointer to char const char * p; p is a
Time of Update: 2018-12-04
本文章基於:http://www.cnblogs.com/QLinux/articles/2465329.html,稍作了修改。大師級經典的著作,要字斟句酌的去讀,去理解。以前在看K&R的The C Programming Language(Second Edition)中第1.5節的字元輸入/輸出,很迷惑getchar()和EOF的行為。因此,感覺很有必要總結一下,不然,很多瑣碎的知識點長時間過後就會淡忘的,只有寫下來才是最好的方法。一、對getchar的兩點總結:1.