1、内存 断电会丢失数据,电脑里面的内存条。硬盘断电不会丢失数据。 2、指针 指针到底是什么?->内存地址 数据(变量)存储在内存里面,存储在内存那个位置?->由内存随机分配 如何获取该变量的地址?->使用取地址符号&,就可以得到该变量的地址 程序:获取变量的地址(是一个具体的值)
#include<stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
printf("a的地址:%d,b的地址:%d,c的地址:%d",&a,&b,&c);
while (1);
}
指针常量->固定的内存地址,&a=9435640、&b=9435628,&c=9435616是常量不能修改。不能随便给&a赋值。
指针变量:
#include<stdio.h>
int main()
{
int a = 1;
int* p;
p = &a;
printf("a的地址为:%d\n", p);
printf("a的地址为:%d\n", &a);
while (1);
return 0;
}
看完是否有点懵逼,其实刚开始我也是一样。。
int* p=&a;
int* p;p = &a;
我会不特别理解这两句的区别(是同一句话),其实你只要记住int* 是一起的,是一个新的类型,存地址的类型,那么p就是存地址的。
int* p;
现在可以从第二句倒过来读
int* p;
p = &a;
指针到底是什么?->内存地址 如果你还看不懂,那应该是我的问题了。(去看看视频教程吧)
3、间接访问 指针(int* p) 间接访问修改变量(int a)的值。
#include<stdio.h>
int main()
{
int a = 1;
int* p;
p = &a;
printf("1、a=%d\n", a);
*p = 10;
printf("2、a=%d\n", a);
system("pause");
return 0;
}
4、二级指针
#include <stdio.h>
int main()
{
char ch='A';
char* pch=&ch;
char** ppch=&pch;
printf("%c\n",ch);
** ppch='B';
printf("%c\n",ch);
return 0;
}
5、数组和指针
#include <stdio.h>
int main()
{
char ch[10]="ASDFGHJKLP";
char *pch[10];
char **ppch=pch;
int i;
for(i=0;i<10;i++)
{
pch[i]= &ch[i];
}
for(i=0;i<10;i++)
{
printf("%c ",**ppch);
ppch++;
}
printf("\n");
return 0;
}
6、const修饰指针
#include <stdio.h>
int main()
{
int num=1;
const int limit=10;
const int *p1=&limit;
int* p;
const int* p;
int * const p;
const int * const p;
return 0;
}
7、函数指针
#include <stdio.h>
typedef int (*funptr)(int,int);
int add(int num1,int num2)
{
return (num1+num2);
}
int sub(int num1,int num2)
{
return (num1-num2);
}
funptr select(char ch)
{
switch(ch)
{
case '+':
return add;
break;
case '-':
return sub;
break;
}
}
int evaluate(char ch,int num1,int num2)
{
funptr f=select(ch);
return f(num1,num2);
}
int main()
{
printf("%d\n",evaluate('+',5,6));
printf("%d\n",evaluate('-',5,6));
return 0;
}
|