-
Notifications
You must be signed in to change notification settings - Fork 1
/
82测试.c
119 lines (68 loc) · 2.87 KB
/
82测试.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <stdio.h>
#include <stdlib.h>
int add(int a);
int add(int a){
return 0;
}
1.函数的指针
2.指针型函数:返回值是指针(与普通函数的唯一区别)
int * abc(){
int a=0;
return &a;
}
double * abc2(){
double a=0;
return &a;
}
int main(){
int a=0;
int *p=&a;
*p=a;
int arr[3]
//如果不加括号,*会修饰返回值 则表示返回值是一个指针类型.
//如果要表示一个指针,则变量名必须被*修饰
int (*padd)(int)=add;//函数的指针
add(2);//用函数名
//与上面的用法等效
padd(2);//用指针
/*
//printf("%s\n",arr);
for (int i=0; i<3; i++) {
arr[i]=(char *)malloc(sizeof(char));
//printf("%p\n",arr[i]);
printf("%d\n",scanf("%s",arr[i]));
printf("%s\n",arr[i]);
}
int temp=10000;
char cc='a';
printf("%c\n",*(&cc+2));
int a=3,b=4,c=5;
int *p1=&a;
int *p2=&b;
int *p3=&c;
int *arr[3]={p1,p2,p3};
//p1==arr;错 p1==arr[0]对 arr==&arr[0]对 arr==&p1;错
printf("%p--%p--%p--%p\n",arr,&p1,&arr[0],*(&arr+1));
//指针与地址:
1.指针在内存中占用8(64位),并且,指针里面能存地址,指针有自已的地址
2.指针里面的存的地址可以改变,但是地址本身不能变化.
3.指针有类型概念.地址只是一个16进制的常量
4.指针本身可以移动指向新的数据空间.并且指针移动一位字节数不一样(由类型决定)
5.指针有两层含义:1.表示一个能存地址变量(等效于指针变量).2.指还含有数据类型的概念
*/
/*
1.定义一个长度为5的int数组.分别用while与for遍历打印每一个值.
(且每种都用两种方式:1.用数组名.2.用指针).
2.定义一个函数可以把任意一个整型数组的最小值取出来.
3.定义一个函数可以把任意一个整型数组的平均值取出来.
4.定义一个字符串数组,并打印里面的每一个字符串.
5.已知一个int数组 int arr[4]={2,4,3,6};问:*(arr+1)与*(&arr+1)的值一样吗?
6.分别用数组的指针与数组元素的指针去遍历打印5题中数组里面的每一个值.
7.把int arr[4]={65,66,67,68};转换成一个字符数组char arr[4];
8.定义一个函数,把任意一个大写字母转换成小写字母.注:大写与小写相差32.如'a'=65 'A'=97;
9.在控制台上输入整数,创建一个长度为3的int数组,用数组的每一个元素的指针组成一个int指针数组,并通过这个int指针数组求int数组的最小值.
10.已知int a=4; int *p=&a; int *ps=&p; int *pss=&ps; 用指针pss把a的值改成100;
11.定义一个函数的指针,并使用.
*/
return 0;
}