33,311
社区成员
发帖
与我相关
我的任务
分享
[code=c]
#include <stdio.h>
int main()
{
typedef struct
{
float foclen;
float fstop;
char brand [30];
}LENS;
LENS cameras[10];
cameras[2]={
500.0,
2.0,
"koda"
};
printf("The jiaojv changdu wei:%f\n",cameras[2].foclen);
printf("The kongjing wei:%f\n",cameras[2].fstop);
printf("The pingpai wei:%s\n",cameras[2].brand);
return 0;
}
[/code]
int x= 0; //0 是初始化表
int y =x; //x 是初始化表
char a[] ="12345"; //"12345"是初始化表
char a[] ={'1','2','3'};//={'1','2','3'};是初始化表
struct {
int x,y;
} point = {1,2};// {1,2}是初始化表
struct {
int a,b;
s[10];
} point = {1,2,"12345"};// {1,2,"12345"};是初始化表
以上 = 后面部分就是初始化表;
//1、数组的初始化、赋值
char arrCh[30] = {'k', 'o', 'd', 'a'}; //字符数组初始化有这两种方法
char arrCh[30] = "koda";
int arrInt[5] = {1, 2, 3, 4, 5}; //整型数组初始化
int arrInt[5]; //先定义一个整型数组
arrInt[2] = 3; //赋值是也只能具体到某个成员变量去赋值
//arrInt[5] = {1, 2, 3, 4, 5}; //这样赋值就明显不对,定义之后arrInt[5]就表示arrInt数组的第6个元素
//这是也下标越界
//2、结构体的赋值
typedef struct
{
float foclen;
float fstop;
char brand[30];
}LENS;
LENS cameras[10]; //先定义
//下面赋值就要具体到每个结构体数组中各个成员变量了
cameras[2].foclen = 232;
cameras[2].fstop = 90;
//但是该结构体中有字符数组作为成员变量,就又要具体到某个字符变量赋值了
(cameras[2].brand)[0] = 'k';
(cameras[2].brand)[1] = 'o';
(cameras[2].brand)[2] = 'd';
(cameras[2].brand)[3] = 'a';
//或者这样赋值,直接调用拷贝函数或者其他函数
strcpy_s(cameras[2].brand, sizeof(cameras[2].brand), "koad");
至于你问为什么是这样,我只能说这是C编译器规定的吧,具体我也不知道了! typedef struct
{
float foclen;
float fstop;
char brand [30];
}LENS;
//(1)、在定义结构体变量时初始化
LENS cameras[10] = {0, 0, {12.3, 2.3, "afkjaf"}};//给cameras[0]、cameras[1]赋值为0
//(2)、定义之后再要赋值就要给结构体成员变量赋值了
LENS cameras[10];
cameras[2].foclen = 232;
cameras[2].fstop = 90;
strcpy_s(cameras[2].brand, 30, "koad"); //注意对字符数组的赋值方式
//另外:对于字符数组赋值也与结构体类似,也不能这样给字符数组这样赋值
cameras[2].brand = "koda"; //这种赋值方法是错误的