C高级第四天

第1题

指针与一维数组,指针数组,数组指针。

代码:

// 指针与一维数组,指针数组,数组指针。
#include 

int main(int argc, const char *argv[])
{
	int arr[3] = {10, 20, 30}; //一维数组
	// 指针与一维数组
	// 使用指针指向数组的首地址 pa等价arr
	int *pa = arr;

	//使用指针遍历一维数组元素的两种方法
	int n = sizeof(arr) / sizeof(int);
	for (int i = 0; i < n; i++)
	{
		printf("下标%d: %d %d\n", i, pa[i], *(pa + i));
	}
	printf("-------------------------------------\n");

	// 指针数组
	// 指针类型的数组
	int a = 5, b = 6, c = 7;
	int *ptr[3] = {&a, &b, &c};

	//遍历数组中每个元素所指向的变量的值
	n = sizeof(ptr) / sizeof(int *);
	for (int i = 0; i < n; i++)
	{
		printf("下标%d所指向变量的值为:%d %d\n", i, *ptr[i], **(ptr + i));
	}
	printf("-------------------------------------\n");

	// 数组指针
	// 指向整个数组的指针 *parr等价arr
	int(*parr)[3] = &arr;

	// 遍历指针所指向数组的每个元素
	n = sizeof(*parr) / sizeof(int);
	for (int i = 0; i < n; i++)
	{
		printf("下标%d: %d %d\n", i, (*parr)[i], *(*parr + i));
	}

	return 0;
}

运行结果:

C高级第四天_第1张图片

第2题

用指针改写strlen strcpy。

代码:

// 用指针改写strlen strcpy
#include 

int my_strlen(char *str)
{
	int len = 0;
	char *p = str;
	while (*p++ != '\0')
	{
		len++;
	}
	return len;
}

char *my_strcpy(char *str1, char *str2)
{
	char *p1 = str1, *p2 = str2;
	while ((*p1++ = *p2++) != '\0')
		;

	return p1;
}



int main(int argc, const char *argv[])
{
	char str1[] = "hello";
	char str2[] = "world";
	printf("my_strlen=%d\n", my_strlen(str1));
	my_strcpy(str1, str2);
	printf("%s\n", str1);
	return 0;
}

运行结果:

你可能感兴趣的:(c语言,开发语言)