日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

几道C语言题目

發布時間:2025/5/22 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几道C语言题目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一題

下面代碼的輸出結果是?

int main()
{
int a[][3] = {1, 2, 3, 4, 5, 6};
int (*ptr)[3] = a;
printf("%d, %d\n", (*ptr)[1], (*ptr)[2]);

++ptr;
printf("%d, %d\n", (*ptr)[1], (*ptr)[2]);

system("pause") ;
return 0 ;
}

結果

2, 3

5, 6

分析

ptr的類型是int(*)[3],那么*ptr的類型便是int[3],也就是int*(編譯器會將數組名轉換成指針),所以*ptr相當于指向第一個元素1的指針,所以ptr[1] = 2, ptr[2] = 3

++ptr相當于將ptr向后移動三個int,也就是12個字節,所以此時ptr指向元素4,那么ptr[1] = 5, ptr[2] = 6

第二題

下面代碼輸出什么?

int i = 3;
int j = sizeof(++i + ++i);
cout << i << endl ;
cout << j << endl ;

1. 首先j的值肯定是4,因為無論括弧內部的值是多少,它始終是int類型。

2. i的值不是5,因為sizeof雖然是一個編譯時運算符,但是卻有函數的性質,就是說,它有參數。這里括弧里面相當于sizeof的參數。而且i是值傳遞的。所以不會影響到原來的值,i = 3

如果是下面這樣呢?

int i = 3;
int j = (++i+ ++i);
cout << i << endl ;
cout << j << endl ;

很顯然,i = 5, j = 10.

第三題

下面代碼輸出什么?

void f1(int *, int);
void f2(int *, int);
void(*p[2]) ( int *, int);

int main()
{
int a = 3;
int b = 5;

p[0] = f1;
p[1] = f2;

p[0](&a , b);
printf("%d\t %d\t" , a ,b);

p[1](&a , b);
printf("%d\t %d\t" , a ,b);

getchar() ;
}

void f1( int* p , int q)
{
int tmp;
tmp =*p;
*p = q;
q= tmp;
}

void f2( int* p , int q)
{
int tmp;
tmp =*p;
*p = q;
q= tmp;
}
輸出 5 5 5 5

注意,函數f1()和f2()確實能交換p和q,但是要注意,這里的q是指傳遞,所以不會影響原來的值。

總結

以上是生活随笔為你收集整理的几道C语言题目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。