C语言数组 函数

一维数组:

#include <stdio.h>

int b[5];    //未初始化的全局变量是0

int main()
{
	int i;
	//int array[5];   //未初始化的局部变量是垃圾值
	//int array[5] = {1, 2, 3, 4, 5};
	//int array[5] = {1, 2};   //对部分元素初始化,其他未初始化元素为0
	int array[] = {1, 2, 3, 4 ,5};

	for (i = 0; i < sizeof(array) / sizeof(array[0]); i++)
	{
		printf("%d ", array[i]);
	}
	printf("\n");

	printf("%p\n", &array[0]);    //数组首元素地址,单位是4字节
	printf("%p\n", array);        //array是数组名,同时也是数组首元素地址,单位是4字节
	printf("%p\n", &array);       //数组的地址,单位是一个数组,20字节

	printf("*****************\n");

	printf("%p\n", &array[0] + 1);
	printf("%p\n", array + 1);
	printf("%p\n", &array + 1);

	return 0;
}

二维数组:

#include <stdio.h>

int main()
{
	int i, j;
	//int a[4][3];
	//int a[4][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12};
	//int a[4][3] = {{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {7, 9, 8}};
	//int a[4][3] = {1, 2};
	//int a[4][3] = {{1}, {2, 3}, {3, 4}, {5}};
	//int a[][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12}; //定义方法
	int a[4][3] = {0};

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}

	printf("%p\n", &a[0][0]);    //首元素的地址,单位4字节
	printf("%p\n", a[0]);        //首行首元素地址,单位4字节
	printf("%p\n", &a[0]);       //首行的地址,单位12字节
	printf("%p\n", a);           //首行的地址,单位12字节
	printf("%p\n", &a);          //数组的地址,单位48字节

	printf("***********************\n");

	printf("%p\n", &a[0][0] + 1);
	printf("%p\n", a[0] + 1);
	printf("%p\n", &a[0] + 1);
	printf("%p\n", a + 1);
	printf("%p\n", &a + 1);

	printf("******************\n");
	printf("%p %p\n", a[1], *(a + 1));  //[x]   ======== *(a + x)

	return 0;
}

字符数组:

#include <stdio.h>

int main()
{
#if 0
	int i;
	char a[10] = {'a', 'b', 'c', 'd'};

	for (i = 0; i < 10; i++)
	{
		printf("%c", a[i]);
	}
	printf("\n");
#endif

	char a[11] = "helloworld";
	printf("%s\n", a);

	scanf("%s", a);
	printf("%s\n", a);

	return 0;

}

strcat(str,ptr);把字符串ptr接到str后

strcpy(str,ptr);把ptr指向的字符串拷贝到str(包含\0且覆盖原始的字符串)

strcmp(str,ptr);逐个比较字母大小(遇到不同的停止)

​
#include <stdio.h>
#include <string.h>

int main()
{
/*
	char str[20] = "hello";
	char ptr[20] = "world";

	strcat(str, ptr);        //将字符串ptr连接到str后面

	printf("%s\n", str);*/

/*	char str[20] = "helloworld";
	char ptr[20] = "world";


	//strcpy(str, ptr);    //字符串拷贝函数 把ptr指向的字符串拷贝到str里 包含'\0'
	strncpy(str, ptr, 3);
	printf("%s\n", str);*/

	//字符串赋值
	/*1、char str[20] = "hello";
	2、char str[20];
	str[0] = 'h';
	str[1] = 'e'
	...
	3、strcpy(str, "hello");

	错误:char str[20];
	str = "helloworld";*/

	char str[20] = "hello";
	char ptr[20] = "world";

	if (strcmp(str, ptr) == 0)
	{
		printf("字符串相等\n");
	}
	else if (strcmp(str, ptr) > 0)
	{
		printf("%s 大于 %s\n", str, ptr);
	}
	else if (strcmp(str, ptr) < 0)
	{
		printf("%s 小于 %s\n", str, ptr);
	}

	if (strncmp(str, ptr, 1) < 0)
	{
		printf("%s 小于 %s\n", str, ptr);
	}

	return 0;
}



​

register 寄存器变量

#include <stdio.h>

int main()
{
	register int a = 1;   //定义一个寄存器变量 a存放在寄存器中

	&a;        //& 取的是内存的地址,
	return 0;
}

冒泡法排序(函数调用的方法)

​
#include <stdio.h>

void GetArray(int a[], int length)
{
	int i;
	printf("Please input:\n");
	for (i = 0; i < length; i++)
	{
		scanf("%d", &a[i]);
	}
}

void sort(int a[], int length)
{
	int i, j, tmp;

	for (i = 0; i < length - 1; i++)
	{
		for (j = 0; j < length - i - 1; j++)
		{
			if (a[j + 1] < a[j])
			{
				tmp = a[j + 1];
				a[j + 1] = a[j];
				a[j] = tmp;
			}
		}
	}
}

void print(int a[], int length)
{
	int i;
	for (i = 0; i < length; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}

int main()
{
	int i, j, tmp;
	int a[10] = {0};
	int length = sizeof(a) / sizeof(a[0]);

	GetArray(a, length);

	sort(a, length);

	print(a, length);

	return 0;
}




​

猜你喜欢

转载自blog.csdn.net/qq_42200456/article/details/81174464