函數說明:socket()用來建立一個新的socket, 也就是向系統注冊, 通知系統建立一通信端口. 參數domain 指定使用何種的地址類型, 完整的定義在/usr/include/bits/socket.h 內, 底下是常見的協議:
江陵網站建設公司成都創新互聯公司,江陵網站設計制作,有大型網站制作公司豐富經驗。已為江陵上千提供企業網站建設服務。企業網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的江陵做網站的公司定做!
PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 進程通信協議
PF_INET?AF_INET Ipv4 網絡協議
PF_INET6/AF_INET6 Ipv6 網絡協議
PF_IPX/AF_IPX IPX-Novell 協議
PF_NETLINK/AF_NETLINK 核心用戶接口裝置
PF_X25/AF_X25 ITU-T X. 25/ISO-8208 協議
PF_AX25/AF_AX25 業余無線AX. 25 協議
PF_ATMPVC/AF_ATMPVC 存取原始 ATM PVCs
PF_APPLETALK/AF_APPLETALK appletalk (DDP)協議
PF_PACKET/AF_PACKET 初級封包接口
參數 type 有下列幾種數值:
1、SOCK_STREAM 提供雙向連續且可信賴的數據流, 即TCP. 支持 OOB 機制, 在所有數據傳送前必須使用connect()來建立連線狀態.
2、SOCK_DGRAM 使用不連續不可信賴的數據包連接
3、SOCK_SEQPACKET 提供連續可信賴的數據包連接
4、SOCK_RAW 提供原始網絡協議存取
5、SOCK_RDM 提供可信賴的數據包連接
6、SOCK_PACKET 提供和網絡驅動程序直接通信. protocol 用來指定socket 所使用的傳輸協議編號, 通常此參考不用管它, 設為0 即可.
返回值:成功則返回socket 處理代碼, 失敗返回-1.
錯誤代碼:
1、EPROTONOSUPPORT 參數domain 指定的類型不支持參數type 或protocol 指定的協議
2、ENFILE 核心內存不足, 無法建立新的socket 結構
3、EMFILE 進程文件表溢出, 無法再建立新的socket
4、EACCESS 權限不足, 無法建立type 或protocol 指定的協議
5、ENOBUFS/ENOMEM 內存不足
6、EINVAL 參數domain/type/protocol 不合法
1、gets() 函數是從鍵盤輸入字符串,該函數只有一個參數。參數類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數組名。打開編輯器,新建一個c語言文件,引入標準庫并新建主函數:
2、gets() 函數的功能是從輸入緩沖區中讀取一個字符串存儲到字符指針變量 str 所指向的內存空間,這里的程序是用gets函數輸入字符串,可以看到不像scanf那樣需要使用%號,gets函數中直接傳入字符串即可:
3、最后運行下程序,輸入“i love you”,可以看到gets函數可以直接輸出空格,而scanf函數輸出空格則需要使用轉義字符實現,因此gets函數的使用要比scanf簡潔的多。以上就是gets函數使用方法的演示:
舉一個用遞歸調用函數求輸入非負整數的階乘的例子,如下:
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
int?fact(int?n){
if(n==1?||?n==0)?return?1;
else?return?n*fact(n-1);
}
int?main(void){
int?x;
while(1){
printf("Input?x(int?12=x=0)...\nx=");
if(scanf("%d",x),x=0??x=12)//x12時會使結果溢出
break;
printf("Error,redo:?");
}
printf("%d!?=?%d\n",x,fact(x));
return?0;
}
函數指針告訴CPU下一步需要執行哪里的代碼的指針, 一數組十分相像.
#include?stdio.h
void?function(int?i,?double?d)????//一個函數的聲明
{
printf("函數運行,?%d,?%lf\n",?i,?d);
}
void?AnotherFunction(int?i,?double?d)????//另外一個函數聲明
{
printf("又一個函數運行,?%d,?%lf\n",?i,?d);
}
int?main()
{
void?(*pFun)(int,?double);????//定義了一個函數指針
int?(*p)(int?,?double);????//用于調試的函數指針
pFun?=?function;????//讓這個函數指針指向第一個函數
pFun(10,?10.101);????//通過這個函數指針來調用第一個函數
pFun?=?AnotherFunction;????//讓這個函數指針指向第二個函數
pFun(20,?20.202);????//通過這個函數指針來調用第二個函數
//若將以下代碼取消注釋,?就會產生錯誤
/*
p?=?function;
p?=?AnotherFunction;
//原因很簡單,?因為p是必須指向一個返回值為int,?第一個參數為int,?第二個參數為double的函數,?但是在此代碼中定義的函數返回值是void
*/
//這個實驗中,?直接用函數名來賦值了,?是因為函數名其實就是這個函數的指針
//而在平常調用函數時,?都要加上(),?如:printf("");
//這里,?"()"就相當于'*'(就是取值運算符),?printf是函數指針,?就相當于是數組名,?即數組的首地址
return?0;
}
新聞名稱:c語言選擇函數事例 c語言選擇函數怎么寫
網站地址:http://vcdvsql.cn/article30/dooocso.html
成都網站建設公司_創新互聯,為您提供面包屑導航、外貿建站、App開發、Google、關鍵詞優化、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯