嵌入式技术
C++数组间赋值不能直接通过数组名称 randy = sesame
进行,因为数组名并不是指针,大部分情况下,编译器会隐式转换为指向数组首元素的指针常量。
如果使用 sizeof(数组名)
,就会得到数组所占内存大小(每个元素大小 * 元素个数)
如果对数组名取地址 &数组名
,表示数组的地址,其值与首元素地址相同。
具体看下图图示:
#include < iostream >
void Print(int array[], int num) {
for (size_t i = 0; i < num; i++) {
std::cout < < array[i] < < " ";
}
std::cout < < std::endl;
}
int main() {
int randy[5] = {2, 1, 3, 8, 7};
int sesame[5];
for (int i = 0; i < 5; i++) {
sesame[i] = randy[i];
}
Print(sesame, 5);
return 0;
}
int main() {
int randy[5] = {2, 1, 3, 8, 7};
int *pSesame = new int[5]; //指针变量
pSesame = randy;
for (int i = 0; i < 5; i++) {
std::cout < < *(pSesame + i) < < std::endl;
}
randy[4] = 33;
std::cout < < "pSesame[4] " < < *(pSesame + 4) < < std::endl;
pSesame = nullptr;
return 0;
}
结果:
2
1
3
8
7
pSesame[4] 33
int main() {
int randy[5] = {2, 1, 3, 8, 7};
int sesame[5];
memcpy(sesame, randy, sizeof(randy));
Print(sesame, 5);
int qcj[7];
memcpy(qcj, randy, sizeof(randy));
Print(qcj, 7);
return 0;
}
结果:
2 1 3 8 7
2 1 3 8 7 0 -1520381696
int main() {
char randy[6]={"randy"}; // 初始化字符格式不能超过5
char sesame[6];
strcpy(sesame,randy);
std::cout < < randy < < std::endl;
return 0;
}
这里注意,字符数组声明大小时,包括末尾的�
,因为初始化的字符个数不能超过 声明大小 - 1
全部0条评论
快来发表一下你的评论吧 !