① 關於c語言中的結構體數組作為函數參數傳遞的
1、結構體數組傳給指針,實質上是不可能的,本質上傳的是數組首地址,根據偏移來操作數組,這樣看起來好像是真在操作數組一樣。就和普通指針一樣使用,只不過它是結構體數組。
2、常式:
typedefstructStudent
{
charname[10];
intage;
}Student;
#defineLEN10
//printallStudentinfomation
voidfun(Student*pStu,intlen)
{
inti;
for(i=0;i<len;++i)
{
printf("%s %d",pStu[i].name,pStu[i].age);
}
}
intmain()
{
Studentstu[LEN];
fun(stu,LEN);
}
② c語言中,如何在結構體中實現函數的功能
c語言的結構體是一組數據的組合,並不是簡單的單一類型。所以在查找和輸出的時候,均不能直接操作,而是要進行變通。
1
查找。
對於以某一項為關鍵字進行查找時,比如在結構體中有int型的成員a,要查找a為100的結構體變數,這時需要遍歷每個結構體(數組、鏈表、或者其它任意形式),對每個元素的成員a值進行比較,符合的則表示查找成功。
對於結構體中元素較多,同時要對整個結構體每個元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進行比較,以減少代碼量。不過這種情況較為少見,不過多描述。
2
輸出。
對於結構體的輸出,其實就是對其每一項,或者若干項成員變數的輸出。
所以可以使用基本的輸出函數,對每一項單獨輸出,輸出中為了方便閱讀,可以加一些說明文字。
如果對結構體輸出有多處調用的需求,可以在將該功能封裝為函數,供各個需要的函數調用。這樣的好處是,當結構體的成員出現變化,或者結構體輸出要求更改時,修改一處代碼即可完成所有的輸出修改,實現易於維護的效果。
③ C語言結構體編程
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char num[10];
int s;
}strec;
int N;
int fun(strec*a,strec*b)
{
int i,j=0;
strec max;
for(i=0;i<N;i++)
{
printf("輸入姓名:");
scanf("%s",a[i].num);
printf("輸入分數:");
scanf("%d",&a[i].s);
}
max=a[0];
for(i=0;i<N;i++)
if(max.s<a[i].s)
max=a[i];
for(i=0;i<N;i++)
if(max.s==a[i].s)
{ b[j]=a[i];
j++;
}
for(i=0;i<j;i++)
{
printf("%s ",b[i].num);
printf("%d",b[i].s);
printf(" ");
}
return j;
}
void main()
{
strec *a,*b;
int n;
printf("input N:");
scanf("%d",&N);
a=(strec*)malloc(N*sizeof(strec));
b=(strec*)malloc(N*sizeof(strec));
n=fun(a,b);
printf("最高分有%d人 ",n);
}
採納時多給點分!橋這么多代碼不容易啊!
④ c語言結構體有哪些
如下:
第一種:只有結構體定義:
1. struct stuff{
2.char job;
3. int age;
4. float height;
5. };
第二種:附加該結構體類型的「結構體變數」的初始化的結構體定義:
1. //直接帶變數名Huqinwei
2. struct stuff{
3. char job[20];
4. int age;
5. float height;
6. }Huqinwei;
也許初期看不習慣容易困惑,其實這就相當於:
1. struct stuff{
2. char job;
3. int age;
4. float height;
5. };
6. struct stuff Huqinwei;
第三種:如果該結構體你只用一個變數Huqinwei,而不再需要用。
struct stuff yourname; 去定義第二個變數。那麼,附加變數初始化的結構體定義還可進一步簡化出第三種:
1. struct{2. char job;
3. int age;
4.float height;
5. }Huqinwei;