C語言三個點...表示什么意思
- 可變引數
- 陣列批量賦相同值
- 一種陣列賦值方法
1,可變引數
當引數個數可變的時候會使用三個點來表示,比如內核中的printk的定義:
static inline int printk(const char *fmt, ...)
2.陣列批量賦相同值
比如指定從某個下標到另外一個下標初始化為同一個值,比如
1
2 #include <stdio.h>
3
4 int main(){
5 int table[7]={
6 [3 ... 6]=7,
7 };
8 int i = 0;
9 for(i=0;i<7;i++)
10 {
11 printf("table[%d]=%d\n",i,table[i]);
12 }
13 }
這里表示陣列table 下標從3 開始到6的元素賦值為7. 如下:

3. 一種陣列賦值方法
先用三點方法初始化陣列,再用宏定義來對特定的值進行賦值,linux的系統呼叫就是使用這種方法來定義的系統呼叫號,
69 const syscall_fn_t sys_call_table[__NR_syscalls] = {
70 [0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall,
71 #include <asm/unistd.h>
} // 這個是linux系統代碼實體,下面用一個相對簡單的例子來理解這種方法
主函式,用[0 … 6] 對陣列的所有變數賦值為7 ,使用include方式包含對特定值的處理
1
2 #include <stdio.h>
3
4 int main(){
5 int table[7]={
6 [0 ... 6]=7,
7 #include "b.h"
8 };
9 int i = 0;
10 for(i=0;i<7;i++)
11 {
12 printf("table[%d]=%d\n",i,table[i]);
13 }
14 }
特定值處理頭檔案b.h ,_CALL(3,5) 表示對下標為3的賦值為5,
2 #ifndef _CALL
3 #define _CALL(x,y)
4 #endif
5
6 #undef _CALL
7 #define _CALL(x,y) [x]=y,//這里是重新定義引數的形式
8
9 _CALL(3,5)
10 _CALL(4,9)
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270569.html
標籤:C
上一篇:c語言編程練習:溫度轉換
下一篇:C語言編程學習:10大基礎演算法
