c语言指针基础,c语言基础知识指针
指针和一维数组:
#包含stdio.h
//函数调用的本质是值的传递。
//当数组名作为参数传递给子函数时,它被弱化为指针。
//(整数数组在传递时被弱化为整数指针,浮点数组被弱化。
//是浮点指针,字符数组弱化为字符指针)
//所以传递的时候直接写成char *d,
//而不是写成char d[]
无效更改(char *d)
{
printf(%c\n ,*(d 4));//偏移指针。
* d= H
d[1]= E ;
*(D2)= L ;
}
int main()
{
char c[10]= hello ;
变化(c);
卖出期权(c);
返回0;
}
以及指针递增和递减运算符:
#包含stdio.h
int main()
{
int a[3]={ 2,7,9 };
int * p;
p=a;//让指针变量p指向数组的开头
int j;
j=* p;//j=* p;p,一定要去掉后缀。第二步是查看另一个操作符的优先级是否高于
printf(a[0]=%d,j=%d,*p=%d\n ,a[0],j,* p);
//j=(* p);//j=* p;(*p)
//printf(a[0]=%d,j=%d,*p=%d\n ,a[0],j,* p);
j=p[0];
printf(a[0]=%d,j=%d,*p=%d\n ,a[0],j,* p);
返回0;
}
指针动态存储器应用:
#define _CRT_SECURE_NO_WARNINGS
#包含stdio.h
/*
C中的整数,浮点,字符,数组变量都在堆栈空间中,
堆栈空间的大小是在编译时确定的。如果使用的空间量不确定,
则使用堆空间。
*/
//malloc可以帮助我们实现一个动态数组
int main()
{
int I;//表示要申请多少空间
scanf(%d ,I);
char * p;
p=(char *)malloc(I);//malloc应用程序空间的单位是字节。
strcpy(p, malloc success );
看跌期权(p);
//p;//指针偏移量
看跌期权(p);
免费(p);//自由空间,p的值必须与原malloc返回的值一致
p=NULL//如果P的值没有赋值为NULL,那么P就叫做通配符指针。
返回0;
}
上图异常原因:释放空闲空间时指针偏移,缺一不可。
堆空间和堆空间的区别:
#包含stdio.h
//堆栈
char* print_stack()
{
char c[17]=我是print _ stack ;
卖出期权(c);//打印正常
返回c;
}
//堆
char* print_malloc()
{
char * p=(char *)malloc(30);
strcpy(p,我是print _ malloc );
看跌期权(p);//打印正常
返回p;
}
int main()
{
char * p;
p=print_stack()。//当函数完成时,堆栈空间将被释放。
//puts(p);//打印异常。你不能让指针变量指向堆栈空间中的数据来访问它。
p=print _ malloc();//堆空间不会随着子函数的结束而释放,必须自己释放
看跌期权(p);//打印正常
返回0;
}
请指正,谢谢!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。