c语言指针知识点总结,c语言指针类型
指针的本质:
#包含stdio.h
//Symbol-get address,也叫reference,通过它我们可以得到一个变量的地址值。
//指针变量的初始化必须是变量取地址。
//值运算符是*,也叫解引用,通过它我们可以得到一个地址对应的数据。
int main()
{
/* int I=5;
int* i_pointer=*/
int I=5;
int * p=I;
printf(i=%d\n ,I);//直接访问
printf(*p=%d\n ,* p);//间接访问
返回0;
//定义多个指针变量
//int* a,b,c;错误演示
int* a,* b,* c;
}
编程思维练习:
一,
#define _CRT_SECURE_NO_WARNINGS
#包含stdio.h
//使用while或for循环计算n!的价值
int main()
{
/* int n;
scanf(%d ,
int i=1,total=1;
while (i=n) {
total=total * I;
我;
}
printf(%d!=%d\n ,n,total);
返回0;*/
int n;
scanf(%d ,n);
int i,total
for (i=1,total=1;I=n;i ) {
total=total * I;
}
printf(%d ,总计);
返回0;
}第二,
#define _CRT_SECURE_NO_WARNINGS
#包含stdio.h
//有人想把一张100元人民币换成10元、5元、2元和1元的纸币。
//要求正好换40张票,每种票至少一张。有多少种方式?
//枚举方法(穷举方法)
int main()
{
//A、B、C、D分别代表10元、5元、2元、1元的数字。
int a,b,c,d,e=0;
for(a=1;a=9;答
{
for(b=1;b=19b)
{
for(c=1;c=37c)
{
for(d=1;d=37d ) {
如果(a * 10 b * 5 c * 2 d==100 a b c d==40)
{
e;//e表示改变方法的方式有多少种。
}
}
}
}
}
printf(%d\n ,e);
返回0;
}三,
#define _CRT_SECURE_NO_WARNINGS
#包含stdio.h
//输入数字n (n小于等于100),输出数字2出现的次数;
//输入格式是两行
//输入第一行要输入的元素个数,例如:5
//在第二行输入1 2 3 2 1 2,那么输出结果是3,因为2出现了3次。
int main()
{
int n;
scanf(%d ,n);
int arr[100];
int I=0;
for(I=0;I n;我)
{
scanf(%d ,arr[I]);
}
//统计2的出现次数
int count=0;
for(I=0;I n;我)
{
if (arr[i]==2)
{
数数;
}
}
printf( 2=% d \ n 的出现次数,计数);
返回0;
}四,
#define _CRT_SECURE_NO_WARNINGS
#包含stdio.h
#包含字符串. h
/*
读取一个可能包含空格的字符串,并反转该字符串,原
当字符串与反转后的字符串相同时,输出0,原字符串小于反转后的字符串输出-1,
大于反向串1的输出。例如,输入hello,反过来的字符串是olleh,
因为hello小于olleh,所以输出为-1
*/
int main()
{
char c[100],d[100];
gets(c);
int i,j;
//字符串翻转
对于(i=strlen(c) - 1,j=0;I=0;i -,j)
{
d[j]=c[I];
}
d[j]= \ 0 ;
卖出(d);
int result=strcmp(c,d);
如果(结果0)
{
printf(%d\n ,1);
}
else if(结果0)
{
printf(%d\n ,-1);
}
否则{
printf(%d\n ,0);
}
返回0;
}
指针的传递:
#包含stdio.h
//指针的使用场景之一——指针传递
无效更改(int *j)
{
* j=5;//间接访问指针
}
int main()
{
int i=10
printf(更改前i=%d\n ,I);
变革(一);
printf(更改后i=%d\n ,I);
/*函数调用是值传递*/
返回0;
}
指针的偏移量:
#包含stdio.h
//指针-指针偏移量的使用场景之一
/*
数组比较特殊,不能和整型变量、浮点型变量、字符型变量相比较。
数组名A是一个数组,A存储一个值,这个值是数组的地址值和起始地址。
*/
int main()
{
int a[5]={ 1,2,3,4,5 };
/*
int * p=0xcccccccc
如果上面定义了指针类型变量,它将被生成
引发了异常:读取访问冲突。
P0xCCCCCCCC。
发生上述异常是因为相应的内存位置不可读。
内存分为三种权限:可读、可写、可执行。
可读可写。
*/
int * p;
p=a;
//取一个指针变量的值,得到的类型是它的基类型,所以下面的值用%d。
printf(*p=%d\n ,* p);
for(int I=0;i5;我)
{
printf(%d\n ,*(p I));
}
返回0;
}数组比较特殊,不能和整型变量、浮点型变量、字符型变量相比较。
数组名A是一个数组,A存储一个值,这个值是数组的地址值和起始地址。
请指正,谢谢!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。