C语言数组赋值方法总结

C语言数组赋值方法总结

目录

介绍

声明时初始化

对于基本数据类型数组(如int, float等)

对于字符数组(字符串)

声明后逐个赋值

使用循环批量赋值

使用 memset 快速填充(适用于字节级赋值)

注意事项

使用 memcpy 复制数组

对于字符串数组,可以使用strcpy(注意:只能用于以'\0'结尾的字符串)

注意事项

介绍

在C语言中,给数组赋值有多种方式,具体取决于数组的类型(例如,是基本数据类型还是字符数组)以及赋值的方式(初始化时赋值还是后续赋值)。以下是一些常见的情况:

声明时初始化

对于基本数据类型数组(如int, float等)

// 完整初始化

int arr1[5] = {1, 2, 3, 4, 5};

// 部分初始化(剩余元素自动赋值为0)

int arr2[5] = {10, 20}; // [10, 20, 0, 0, 0]

// 省略数组长度(编译器自动计算)

int arr3[] = {7, 8, 9}; // 长度=3

对于字符数组(字符串)

// 字符数组(字符串)

char str1[] = "Hello"; // 自动添加结束符'\0'(长度=6)

char str2[5] = {'W', 'o', 'r', 'l', 'd'}; // 无结束符

声明后逐个赋值

int arr[3];

arr[0] = 100; // 下标从0开始

arr[1] = 200;

arr[2] = 300;

使用循环批量赋值

#include

#define SIZE 5

int main() {

int numbers[SIZE];

// 通过循环赋值

for (int i = 0; i < SIZE; i++) {

numbers[i] = i * 10; // 赋值为0,10,20,30,40

}

// 打印验证

for (int i = 0; i < SIZE; i++) {

printf("numbers[%d] = %d\n", i, numbers[i]);

}

return 0;

}

使用 memset 快速填充(适用于字节级赋值)

#include

int main() {

int arr[10];

// 将数组所有字节设为0(常用于清零)

memset(arr, 0, sizeof(arr));

char text[10];

memset(text, 'A', sizeof(text)); // 填充为'A'(注意:最后一个字符不是结束符)

text[9] = '\0'; // 手动添加结束符(若需作为字符串使用)

return 0;

}

注意事项

memset是按字节赋值的,使用memset将数组的所有字节设置为特定值(通常用于0或特定字节值)

int a;

memset(a,0,sizeof(int)); // a = 0x00000000 = 0

memset(a,1,sizeof(int)); // a = 0x01010101 = 16843009

使用 memcpy 复制数组

#include

int main() {

int src[] = {99, 88, 77};

int dest[3];

// 复制整个数组 将src数组的内容复制到dest

memcpy(dest, src, sizeof(src)); // dest = {99, 88, 77}

return 0;

}

对于字符串数组,可以使用strcpy(注意:只能用于以'\0'结尾的字符串)

char src[] = "Hello World";

char dest[20];

strcpy(dest, src); // 复制字符串,包括结束符

注意事项

数组长度固定:声明后长度不可改变。

下标越界:访问 arr[n](n>=数组长度)会导致未定义行为。

数组名是常量指针:不能直接赋值(如 arr1 = arr2 是非法的)。

字符数组 vs 字符串:字符数组需手动添加 '\0' 才能作为字符串使用。

🌸 相关推荐

制作你的视频广告
正规365网址是多少

制作你的视频广告

📅 07-07 👀 5097
Viagen DirectPCR® Lysis Reagent (Mouse Tail)    鼠尾直接PCR裂解液
正规365网址是多少

Viagen DirectPCR® Lysis Reagent (Mouse Tail) 鼠尾直接PCR裂解液

📅 07-21 👀 1545
熊猫速汇怎么用?熊猫速汇靠谱吗?
365彩票老版本

熊猫速汇怎么用?熊猫速汇靠谱吗?

📅 07-20 👀 5073