C语言,指针指针指针

C语言,指针指针指针,第1张

C语言,指针指针指针

一月二日记录

数组与指针

  • 字符串与指针

        访问字符串有两种方式,一种是使用字符数组来存放一个字符串;另一种是使用字符指针指向一个字符串,此时可以不定义数组。

        简单使用:

char *str = "hello world!";

printf("%s",str);

char *str = { ' ' };

scanf("%s", str);

printf("%s", str);

  • 字符串数组

        字符串数组有别于字符数组,字符数组是一个一维数组,而字符串数组是以字符串为数组元素的数组,可将其视为二维数组。

定义一个简单的字符串数组:

char country[5][20]=

{

        "China",

        "Japan",

        "Russia",

        "Germany",

        "Switzerland"

}

        在定义字符串数组时,我们经常会发现定义使用的内存空间远远大于实际使用的内存空间,这样会造成资源浪费。为了节约资源,我们可以使用指针数组。

  • 指针数组

        指针数组,顾名思义,就是数组元素都是指针。

一个简单的应用:

#include
int main()
{
    int i;
    char *country[]=
    {
        "China",

        "Japan",

        "Russia",

        "Germany",

        "Switzerland"
    };
    for(i = 0; i < 5; i++)
    {
        printf("%sn",month[i]);
}

指向指针的指针

        其实就是第二个指针的内容是第一个指针的地址。

指针变量作函数参数

        有些类似于将数组名作为函数参数。

        如:

                自定函数

                主函数

                             

补充一个冒泡排序

冒泡排序指:在排序时,每次比较数组中相邻的两个数组元素的值,将较小的数排在较大的数的前面。一般需要双层循环,每一次完整循环都会将数组中最小(大)的数移动到最前面:

#include
int main()
{
	int a[5] = { 9,8,10,21,2 };
	int temp = 0;
	for (int i = 0; i < 5; i++)
	{
		for (int j = 4; j > i; j--)
		{
			if (a[j] >= a[j - 1])//从大到小
			{
				temp = a[j];
				a[j] = a[j - 1];
				a[j - 1] = temp;
			}
		}
	}
	for (int i = 0; i < 5; i++)
	{
		printf("%dn", a[i]);
	}
	return 0;
}

当然我们还可以用指针实现冒泡排序:

#include
void order(int* p, int n)
{
	int temp = 0;
	for (int i = 0; i < n; i++)
	{
		for (int j = n - 1; j >= i; j--)
		{
			if (*(p + j) < *(p + j - 1))//从小到大
			{
				temp = *(p + j);
				*(p + j) = *(p + j - 1);
				*(p + j - 1) = temp;
			}
		}
	}
	return;
}
int main()
{
	int a[50] = { 0 }, n = 0;
	printf("请输入数组元素个数:");
	scanf_s("%d", &n);
	printf("请输入各个元素:");
	for (int i = 0; i < n; i++)
	{
		scanf_s("%d", a + i);
	}
	order(a, n);
	for (int i = 0; i < n; i++)
	{
		printf("%dn", *(a + i));
	}
	return 0;
}

有点点麻烦....

返回指针值的函数

        指针变量也可以指向一个函数。函数在编译是时被分配一个入口地址,该入口地址就是函数的指针。我们可以用一个指针变量指向函数,然后通过该指针变量调用此函数。

        一个函数可以带回一个整型值、字符值等,也可以带回指针型的数据,就是地址。

        定义一个指针函数:

类型名 *函数名(参数列表);

int *fun(int a, int b);

        这时候返回值就是一个指针了。

指针数组做main函数参数

todo。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存