在vc环境中,如何初始化字符串数组
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
楼主是否是说一个数组空间,在初始化的时候赋值为字符串?无论如何要理解数组与字符串之间的区别:数组一般表示连续定长的空间,若不定长则为理解为指针,字符串存在'\0'字符的结束符,下面可以促进理解:
1. char a[] = "0123456789"; sizeof("0123456789") = ? sizeof(a) =?
a 为数组,它是定长的编译器给它的长度为 11, sizeof("0123456789")=sizeof(a)=11
2. void func(char a[]){ size(a) =? }
a 作为函数参数视为指针, sizeof(a)=4 (32位地址空间)
3. char *str = "0123456789", 中 sizeof(str), strlen(str)
sizeof(str)=4, strlen(str)=10 计算字符串长度是去掉'\0'的长度.
因此在定义数组的时候,如果用它 hold 一个字符串,一般定义为 char a[len + 1]={0}; 而在拷贝的时候必须进程长度判断,if(strlen(str) <= len) strcpy(a, str); else ... 或者另外一种做法就是 memcpy(a, str, len);
1. char a[] = "0123456789"; sizeof("0123456789") = ? sizeof(a) =?
a 为数组,它是定长的编译器给它的长度为 11, sizeof("0123456789")=sizeof(a)=11
2. void func(char a[]){ size(a) =? }
a 作为函数参数视为指针, sizeof(a)=4 (32位地址空间)
3. char *str = "0123456789", 中 sizeof(str), strlen(str)
sizeof(str)=4, strlen(str)=10 计算字符串长度是去掉'\0'的长度.
因此在定义数组的时候,如果用它 hold 一个字符串,一般定义为 char a[len + 1]={0}; 而在拷贝的时候必须进程长度判断,if(strlen(str) <= len) strcpy(a, str); else ... 或者另外一种做法就是 memcpy(a, str, len);
追问
谢谢您的回答,我的意思是:比如定义一个变量类型:
define n 100
typedef struct {
char workplace[16];
char workaddress[16];
char postcode[6];
char officenumber[12];
char cellphone[11];
char email[16];
} PI;
然后,在主函数main()中定义PI s[n],
我想让所有s[]中的某一个字符串变量(例如workplace)全部初始化为同一字符串,该如何操作?还望赐教
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询