日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

几道C语言题目

發布時間:2025/5/22 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几道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语言题目的全部內容,希望文章能夠幫你解決所遇到的問題。

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