題設(shè)是有問題的
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)柘城,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
首先你定義了一個結(jié)構(gòu)體_STR_POINT 并且自定義了一個類型STR_POINT
現(xiàn)在你函數(shù)的返回值是STR_POINT類型? ?而你要求返回STR_POINT數(shù)組
STR_POINT數(shù)組的類型是STR_POINT[]顯然預期類型和返回類型不同啊
這是編譯器的語法預警
你的Change1和Change4不能改變s1的值,因為這兩個函數(shù)的參數(shù)是形參,在傳遞參數(shù)時會產(chǎn)生一個s1的副本,它不會改變實參(s1)的值,函數(shù)里的變量是s1的一個副本,作用域僅限于函數(shù)體內(nèi),函數(shù)調(diào)用結(jié)束后,副本銷毀,而s1的值并沒有因為函數(shù)的執(zhí)行而改變。而Change2傳遞的是指針,指向的就是s1,在函數(shù)體的操作就是對s1的操作,這樣函數(shù)就可以改變s1的值。
#include "stdio.h"
struct abc{
int a;
int b;
char *p;
};
struct abc myabc(void){
struct abc n;
n.a=2;
n.b=3;
n.p=(char *)0x00FF3304;
return n;
}
void main(void)
{
struct abc x={1,2,(char *)0x00FF3300},y;
y=myabc();
printf("%d %d %p\n%d %d %p\n",x.a,x.b,x.p,y.a,y.b,y.p);
}
擴展資料:
在C語言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
C++提供了許多種基本的數(shù)據(jù)類型(如int、float、double、char等)供用戶使用。由于程序需要處理的問題往往比較復雜,而且呈多樣化,已有的數(shù)據(jù)類型顯得不能滿足使用要求。C++允許用戶根據(jù)需要自己聲明一些類型,用戶可以自己聲明的類型還有結(jié)構(gòu)體類型(structure)、共用體類型(union)、枚舉類型(enumeration)、類類型(class )等,這些統(tǒng)稱為用戶自定義類型(user-defined type,UDT)。