#include<stdio.h> #include<stdlib.h> int main() { // char *p;//定义一个野指针:没有让它指向一个变量的地址 // *p='c';//直接对野指针进行操作,会报错 char *p1; p1=malloc(1);//动态开辟内存 *p1='d'; printf("%c\n",*p1); return 0; }
malloc可以动态在堆上开辟地址,函数原型:void * malloc(size_t size);
strcpy,字符串的拷贝函数,函数原型:char * strcpy(char * dest,const char * src);
#include<stdio.h> #include<stdlib.h> #include <string.h> int main() {//将字符串常数拷贝给字符串 char * p2; p2=(char *)malloc(12);//开辟12个字节的内存空间,并返回指针 strcpy(p2,"strcprtfkjk");//把字符串拷贝给p2
printf("%s\n",p2);//输出字符串return 0; }
输出结果:
strcprtfkjk\
注意:
malloc是在堆上开辟内存空间,数组是在栈上开辟空间,堆上的内存在函数结束后会释放,但是堆上的内存只有在程序退出的时候才会释放。
标签:p2,malloc,内存空间,C语言,char,include,开辟 From: https://www.cnblogs.com/zxtang/p/16849259.html