5. 在定义指针变量时,可以只给部分指针变量赋初值; 6. 指针变量的初始化,除了可以是已定义变量的地址,也可以是已初始化的同类型的指针变量,也可以是NULL(空指针); 7. 指针变量初始化时,指针变量的“数据类型符”必须与其“初始地址值”中保存的数据的类型相同; 8. 不能用auto类型的地址去初始化static型指针。
指针变量pc和指针变量pi的唯一区别就是两者的类型不同,pc是char类型的指针变量,存放的是字符变量(大小为1个字节)的地址; 而pi是int类型的指针变量,存放的是整型变量(大小为4个字节)的地址, 而结果pc和pc+1的差值恰好就是1;pi和pi+1的差值恰好就是4 所以我就可以得出指针类型的第一个意义就是: 指针的类型...
BAD_ACCESS坏地址访问错误,像这样的指针我们就叫做野指针。 7. NULL值 完全等价于0 为了防止野指针的产生,建议声明一个指针变量后,最好为其初始化,如果没有变量的地址初始化给这个指针变量。那么就初始化一个NULL值。NULL值代表指针变量不指向内存中的任何地址,这样就不会出现野指针,NULL完全等价于0,所以也可以直...
如果你在定义指针变量的时候,就已经想到指针变量指向的对象,那就直接进行初始化。 如果你在定义的时候,还不清楚指针指向的对象,也不清楚后面要不要使用指针,那就对指针变量赋值为NULL NULL就是空的意思,如果int *p=NULL; 那么此时p就是一个空指针,后面可以重新赋值,并不影响后面的使用。如果一个指针是空指针,在...
4️⃣ 数组指针:这种指针类型用于指向数组的首个元素。它通常与void指针结合使用,表示指向任意类型的数组。例如:```c int arr[] = {1, 2, 3}; // arr是一个int类型的数组 int* p = arr; // p是一个指向数组首元素的指针 ``` 5️⃣ 字符串指针:这种指针类型用于指向一个字符数组的首个元素...
printf(“%p\n”, p + 0x1);这里就非常有意思了指针加一我们都知道是跳过指针类型的大小,整形指针跳过4个字节,字符指针跳过1个指针。而我们这里结构体的大小是20个字节,所以+1跳过的就是20个字节! ●但是要注意这里是以16进制输出的所以20的16进制就是14 ...
在这里, 指针的指针最终指向的对象依然是整型变量, 所以这里的*号我们可以理解为, 有多少根指向线就有多少个*号. 下面我们来看看一个简单的例子: #include <stdio.h> int main() { int a = 10; int *p = &a; int (*(*pp)) = &p;
int*ip;/*一个整型的指针*/double*dp;/*一个 double 型的指针*/float*fp;/*一个浮点型的指针*/char*ch;/*一个字符型的指针*/ 所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。
1、指针声明 使用指针指向int变量 int*p; 这里的int *代表p是一个用来存放int变量地址的指针 使用指针指向返回值void无参数函数 void(*p)(); 2、指针初始化 有时候在声明这一步就对指针进行初始化 初始化指向int变量指针 int n=10;int*p=&n; 初始化指向返回值void无参数函数指针 ...
char *name[]={"Fujian","Huian"}; //定义指针数组name,并对其进行初始化 char **p_name; //定义指针的指针p_name printf("name[0]:%p\n",name[0]); //输出指针数组元素name[0]的值,这里是第一个字符串的首地址 printf("name[1]:%p\n",name[1]); printf("\n"); p_name=&name[0]; /...