数组指针;喝汽水问题

Posted mb617ea45210744

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组指针;喝汽水问题相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

int main()

{

char str1[] = "hello bit.";

   char str2[] = "hello bit.";

char* str3 = "hello bit.";

char* str4= "hello bit.";

if (str1 == str2)

{

 printf("str1和str2相同\\n");

}

else

 printf("str1和str2不同\\n");

if (*str3 == *str4)

{

 printf("*str3和*str4相同\\n");

}

else

 printf("*str3和*str4不同n");

return 0;

}


/*数组指针*/


int main()

{

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

int b[] = { 2, 3, 4, 5, 6 };

int c[] = { 3, 4, 5, 6, 7 };

int *arr[] = { a, b, c };

int i = 0;

for (i = 0; i < 3; i++)

{

 for (int j = 0; j < 5; j++)

 {

  /*printf("%d ", *(arr[i] + j));*/

  printf("%d ", arr[i][j]);

 }

 printf("\\n");

}

 

return 0;

}

/*调试结果:

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7*/

int main()

{

int a = 10;

int *pa = &a;

char b = w;

char* pb = &b;

int arr[7] = { 1, 2, 3, 4, 5, 6, 7 };

int (*parr)[10] = &arr;//取出的是数组的地址

//parr是数组指针,指向数组的地址

//arr是数组名,指向数组的首地址-arr[0]


double* d[5];

double* (*pd)[5] = &d;//pd就是一个指针

return 0;

}


int main()

{

int arr[10] = { 0 };

int (*parr)[10] = &arr;

printf("%p\\n", arr);

printf("%p\\n", parr);


printf("%p\\n", arr+1);

printf("%p\\n", parr+1);

return 0;

}

/*调试结果相同,意义不同:

010FFB7C   数组首元素的地址

010FFB7C    指向数组的地址

0093FCB0    跳过一个数组元素

0093FCD4     跳过一个数组    */



/*数组名是数组首元素的地址

但是两个例外:

1.sizeof(数组名) -数组名表示整个数组,计算的是整个数组大小,单位是字节

2.&数组名,数组名表示整个数组,取出的是整个数组的地址*/


void print1(int arr[3][5],int r,int c)

{

for (int i = 0; i < r; i++)

{

 for (int j = 0; j < c; j++)

 {

  printf("%d ", arr[i][j]);

 }

 printf("\\n");

}

}

void print2(int (*p)[5], int r, int c)

{

for (int i = 0; i < r; i++)

{

 for (int j = 0; j < c; j++)

 {

  printf("%d ", *(*(p + i) + j));

 }

 printf("%\\n");

}

}

int main()

{

int arr[3][5] = { { 1, 2, 3, 4, 5 }, { 2, 3, 4, 5, 6 }, { 3, 4, 5, 6, 7 } };

//int (*p) = &arr;

print1(arr, 3, 5);

//print2(arr, 3, 5);

return 0;

}

/*调试结果:

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7*/

/*喝汽水问题:1元1瓶汽水,两空瓶可以换一瓶汽水,20元可以喝多少汽水*/

int main()

{

int n = 0;

int sum = 0;

int s = 0;

scanf("%d", &n);

while (n>1)

{

 sum = sum + n ;

 n = n / 2 ;

}

printf("%d", sum);

return 0;

}

/*方法2:*/

int main()

{

int n = 0;

scanf("%d", &n);

int sum = n;

while (n > 1)

{

 sum = sum+(n / 2);

 n = (n / 2) + (n % 2);

}

printf("%d", sum);

return 0;

}

以上是关于数组指针;喝汽水问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言进阶之旅(留下的足迹)

C语言进阶之旅(留下的足迹)

喝汽水问题

[C语言]——喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,共有20元,请问可以喝多少瓶汽水?

喝汽水--C语言

1 元钱买一瓶汽水,两个空汽水瓶换一瓶汽水。现有 20 元钱,问最多可以喝到多少瓶汽水?