C语言第四次作业
杨青蒙
20204843
-
c指针是什么?
指针是一个变量,指向地址例如 *p = c, ‘p’保存了c的地址 ,*p则为c的值。
-
编写代码,以⼗六进制输出 a 和 str 的地址(你的代码需仿照下⽅代码格式,使⽤Markdown 代码块)
#include<stdio.h>
int main()
{
char str = 'a';
char* p = &str;
printf("%p\n",p);
}
- c语⾔中, * 都有什么作⽤或⽤法?
’ * '可以作为乘号; 可以用于指针,将访问指针所指对象的地址。
- 通过指针进行两个变量的交换。
include<stdio.h>
int main()
{
void swap(int* p,int* j)
{
int temp = *p;
*p = *j;
*j = temp;
}
}
-
了解⼆级指针,并说出它的含义
二级指针可以获取一级指针的存放地址
-
假设 p 是指向数组 arr 中第 n 个元素的指针,那么 p++、 ++p、(*p)++ 分别是什么意思呢?
++p,p++是指第n+1个元素的地址,(*p)++ 是指第n个元素的数值加一。
-
请使⽤指针操作数组实现 冒泡排序.
#include<stdio.h>
void sort(int *p,int n)
{
int i,j;
for(i = 0;i<n-1;i++)
{
for(j = i+1;j < n;j++)
{
if(*(p+i)>*(p+j))
{
int temp;
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
}
}
}
int main()
{
int a[10];
int i,x;
for(i = 0; i < 10; i++)
{
scanf("%d ",&x);
a[i] = x;
}
sort(a,10);
for(i = 0;i < 10;i++)
{
printf("%d ",*(a+i));
}
return 0;
}
-
选做
-
const int p; // 常量p const int* p; // *p为常量 int const* p ;// *p为常量,p所指的对象可以改变 int *const p ; // 常量指针p,值可以改变 const int * const p; // 指针p为常量,*p也为常量 int const * const p; // 指针p为常量,*p也为常量