一.選擇題
1.有以下程式
#include using namespace std;
struct ord
dt[2]=;
int main()
程式執行後的輸出結果是
a)1,2 b)4,1 c)3,4 d)2,3
分析:指標p指向結構體變數首元素的位址。
2.以下程式的輸出是( ) 。
#include using namespace std;
struct st
*p;int dt[4]=;
struct st aa[4]=;
void main()
a) 10 b) 11 c) 51 d) 60
分析:根據題目易知++(p->x)中,p指向結構體陣列元素的第乙個結構體元素變數,其變數對應的x值為50,則經過自加後50+1=51,即得答案51。
3.若有以下說明和語句
:
struct student
std, *p;
p=&std;
則以下對結構體變數 std 中成員age 的引用方式不正確的是( )。
a)std.age b) p->age c) (*p).age d
)*p.age
分析:成員運算子的優先順序高於指標運算子。
4.若有以下程式段:
struct dent;
int a=1,b=2,c=3;
struct dent s[3]=,,};
void main()
則以下表示式中值為 2 的是( )。
a) (p++)->m b) * (p++)->m c) (*p).m d) *(++p)->m
分析:a選項中由於存在後置自加運算子,則該表示式相當於p->m,即值為1;
b選項中存在後置自加運算子,而指標運算子優先順序低於指向運算子優先順序,p先與指向運算子結合,然後與指標運算子結合,相當於*(p->m),值為1;
c選項中p先與*結合,然後與.結合,值為1;
d選項p先進行前置自加運算,指向結構體陣列的第二個元素,然後與->結合,再與*結合,為指向指標的指標,所指物件的值為2。
二.填空
1.有如下定義
structtab[2]=,}, *p=tab;
則:表示式*p->y 的結果是_____
a______ 。
表示式 *(++p)->y 的結果是____c
______ 。
分析:此處的p代表指標,而*p代表指向指標的指標。指向運算子(->)的優先順序高於指標運算子(*)和前置自加運算子(++)。
2.有以下說明定義和語句:
structa,*b; b=&a;
可用a.day 引用結構體成員day, 請寫出引用結構體成員a.day 的其它兩種形式 __(*b).day_______ 、__b->day
_______ 。
3.結構陣列中存有三人的姓名和年齡,以下程式輸出三人中年齡最年長者的姓名和年齡,請在____________內填入正確內容。
#include
static struct man
char name[20];
int age;
}person=;
void main()
man *p,*q;
int old=0;
p=person;
for(;p_______;p++)
if(oldage)
q=p;
old=p->age__或
old=q->age
____;
cout.閱讀下列程式,寫結果。
#include
struct stu ;
void fun(struct stu *p)
void main(void)
, , };
fun(students+2);
輸出結果:
zhao
四.已知有如下定義:
struct stud
st=,*p=&st;
可通過幾種方式輸出"cheng"?請寫出相應的輸出語句。
cout或cout<<(*p).name<
或cout<
C部落格作業06 結構體 指標
包含結構體user和ranking 及login.cpp和computeexp.cpp所有函式的宣告 具體呼叫login.cpp和computeexp.cpp中的函式 包含註冊 登入功能的所有函式以及排名,讀寫檔案函式 繼承自上次大作業的主體部分,只做輕微改動 登入主介面 註冊 正常註冊 已有賬號 ...
結構體與指標
struct s options opt 此時結構體內的資料都是乙個隨機數 struct s options opts struct s options malloc sizeof struct s options 8 此時各元素為預設初始化值,例如int就是0 一 結構體的定義方法 1 直接定義 ...
指標與結構體
宣告 c c 內容來自西交公開課,之後不再宣告,僅作為筆記 thx.指標與結構體 結構體變數的指標 位址 結構體變數名 使用指標處理結構體變數步驟 1.定義指向結構體變數的指標 結構體型別 指標變數名 2.給指標變數提供初值 格式1 指標變數 成員名 格式2 指標變數 成員名 其中 稱為結構指向運算...