intmain(){int arr[10]={1,2,3,4,5,67,7,8,9,10};int*p=&arr[0];for(i=0;i<10;i++){*(p++)=i;}//此时p已经越界了,可以把p置为NULLp=NULL;//下次使⽤的时候,判断p不为NULL的时候再使⽤//...p=&arr[0];//重新让p获得地址if(p!=NULL)//判断{//...}return0;} 避免返回...
char *s1="dafasdfdsa"; //字符串指针 2)字符数组和字符串指针的区别 1)字符数组存放在 内存的栈 区 2) 字符串指针指向的字符串存储在 内存常量区 char *str="asdfsdfas"; //str指针变量,把字符串的首地址存放到str中 char *str2; //指针变量 str2 = "adsfasdfasdf"; 注意: //定义char类型的数组...
voidtest(int arr[]){int sz2=sizeof(arr)/sizeof(arr[0]);printf("sz2=%d\n",sz2);}intmain(){int arr[10]={1,2,3,4,5,6,7,8,9,10};int sz1=sizeof(arr)/sizeof(arr[0]);printf("sz1=%d\n",sz1);test(arr);return0;} sz1=10 sz2=2 分析上面这段代码,我们发现在main...
函数指针的调用 #include<stdio.h>intadd(intx,inty){returnx+y;}intmain(){int(*p)(intx,inty);//定义函数指针p=add;//函数指针p指向函数addprintf("第一种方法:%d\n第二种方法:%d",(*p)(1,2),p(2,3));//函数指针的两种调用方法return0;} 四、和指针有关的传参 根据传参类型分类 普通变量...
结构体: typedef struct stu{ char name[20]; char sex; int age; }Student; Student stu1 = {"zhangsan",'m',23}; Student *p = &stu1; p就是结构体指针,存放结构体变量第一个成员的地址. Student stu2 ={"lisi",'m',26}; *p = stu2; ...
2. 指针指向的空间释放 在C语言中,当一个指针指向一个函数中分配的内存空间时,如果在该函数返回之前释放了该内存空间,那么这个指针就成为了一个野指针。这是因为在函数返回后,该内存空间已经被释放,指针再次访问这个空间就会导致未定义的行为。 因此,当你使用指针指向调用函数的空间时,你应该确保在函数返回之前不要...
int ***ptr3 = &ptr2; // 三级指针,指向指针的指针的指针 理解这种多层指针时,关键是逐层解读每个指针的作用。 二. 一维数组与指针: 2.1 利用指针遍历数组: #include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr; // 数组名本身就是一个指向数组首元素的指针for ...
C 指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、--、+、-。 假设ptr是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算:ptr++ 在执行完上述的运算之后,ptr将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置...
c语言的二级指针是指指向指针的指针,也就是指针的指针。它的作用是可以用于在函数中修改指针指向的地址或者在函数中修改指针指向的值。通过使用二级指针,可以实现更加灵活的内存管理和数据操作,增强程序的可扩展性和功能性。常见的应用场景包括动态内存分配、链表操作、多维数组等。 0 赞 0 踩...