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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客(错题集)

發布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客(错题集) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、

void main() {int a=1,b=0,c=-1,d=0;d=++a||++b&&++c;cout<<d<<endl;return; } 1. C/C++中,布爾值作為整型輸出時,表現為:true輸出1false輸出02. 語句4為邏輯表達式,因此返回值d為103. 短路原則:||或操作符左操作數為真,即可停止判斷,返回1。 【解釋】運算符優先級:&& > || > = 所以先計算++b&&++c,++c為0,所以整體是false=0,再計算++a||0,++atrue, 所以整體是true=1,所以d=1

2、

int a=0; class someClass{int b;static int c; }; int main(){int d=0;someClass *p=new someClass();return 0; } 變量a 全局變量 存放在全局變量區 變量b 類的成員變量 由類的定義決定 在main函數中類A動態分配 因此b在堆區(注意理解b,因為對象有動態分配空間時,里面已經包含了成員變量的空間,所以成員變量也存儲在堆中。) 變量c 靜態成員 靜態存儲區 變量d 局部變量 棧區

3、如下哪一段代碼不能給地址0xaae0275c賦值為1?

volatile int *p=(int *)0xaae0275c; *p=1 //對 *(volatile int *)0xaae0275c=1 //對volatile int *p=(int *)0xaae0275c; p[0]=1 //對 (volatile int *)0xaae0275c[0]=1 //錯 【注】任何p[i]實質上都是*(p+i). 【解釋】(volatile int *)0xaae0275c[0]=1為什么錯? []運算符優先級較高,所以先0xaae0275c[0]取出這個地址的值,然后將值強制轉換成int* 指針,再賦值,顯然是錯誤的。 最后相當于int *p; p = 1,顯然是行不通的 【修改成正確的-->加上一對括弧】( (volatile int *)0xaae0275c )[0]=1

4、

struct st_task {uint16_t id;uint32_t value;uint64_t timestamp; }; void fool() {st_task task = {};uint64_t a = 0x00010001;memcpy(&task, &a, sizeof(uint64_t));printf("%11u,%11u,%11u", task.id, task.value, task.timestamp); } 上述fool()程序的執行結果為() 答:100


5、string的考點
考點一:分析下列代碼有什么問題?

void test2() //題1 {char string[10], str1[10];int i;for(i=0; i<10; i++){str1 = 'a';} strcpy( string, str1 ); }//數組名str1為 char *const類型的右值類型,根本不能賦值 //strcpy進行拷貝操作,strcpy會從源地址一直往后拷貝,直到遇到'\0'為止。 void test2() {char string[10], str1[10];int i;for(i=0; i<9; i++){str1[i] = 'a';}str1[9] = '\0';strcpy( string, str1 ); }void GetMemory( char **p, int num ) //題2 {*p = (char *) malloc( num ); } void Test( void ) {char *str = NULL;GetMemory( &str, 100 );strcpy( str, "hello" ); printf( str ); } 【答】malloc是否成功沒判斷;malloc的內存沒釋放; void GetMemory( char **p, int num ) {*p = (char *) malloc( num );if(NULL == p) //判斷{printf("申請失敗!\n");} } void main( void ) {char *str = NULL;GetMemory( &str, 100 );strcpy( str, "hello" ); printf( str );free(str); //釋放str == NULL; //置NULL }

考點二:寫出完整版的strcpy函數

//為了實現鏈式操作,將目的地址返回,加3分! char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘\0’ ); return address; }

考點三:已知類String的原型,編寫類String的構造函數、析構函數和賦值函數

class String { public: String(const char *str = NULL); // 普通構造函數 String(const String &other); // 拷貝構造函數 ~ String(void); // 析構函數 String & operator =(const String &other); // 賦值函數 private: char *m_data; // 用于保存字符串 };

6、請寫一個C函數,若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1

int checkCPU() { union w { int a; char b; } c; c.a = 1; return (c.b == 1); }

7、請說出static和const關鍵字盡可能多的作用

static關鍵字至少有下列n個作用: (1)函數體內static變量的作用范圍為該函數體,不同于auto變量,該變量的內存只被分配一次,因此其值在下次調用時仍維持上次的值; (2)在模塊內的static全局變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問; (3)在模塊內的static函數只可被這一模塊內的其它函數調用,這個函數的使用范圍被限制在聲明它的模塊內; (4)在類中的static成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝; (5)在類中的static成員函數屬于整個類所擁有,這個函數不接收this指針,因而只能訪問類的static成員變量。 const關鍵字至少有下列n個作用: (1)欲阻止一個變量被改變,可以使用const關鍵字。在定義該const變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了; (2)對指針來說,可以指定指針本身為const,也可以指定指針所指的數據為const,或二者同時指定為const; (3)在一個函數聲明中,const可以修飾形參,表明它是一個輸入參數,在函數內部不能改變其值; (4)對于類的成員函數,若指定其為const類型,則表明其是一個常函數,不能修改類的成員變量; (5)對于類的成員函數,有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。例如: const classA operator*(const classA& a1,const classA& a2); operator*的返回結果必須是一個const對象。如果不是,這樣的變態代碼也不會編譯出錯: classA a, b, c; (a * b) = c; // 對a*b的結果賦值 操作(a * b) = c顯然不符合編程者的初衷,也沒有任何意義。

總結

以上是生活随笔為你收集整理的牛客(错题集)的全部內容,希望文章能夠幫你解決所遇到的問題。

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