知识点
指针运算
1、取地址运算&和去内容运算*
2、指针与整数的加减运算
3、指针相减运算
4、指针关系运算
指针与结构数组
//定义结构体类型 struct info { short num; char name[5]; }; //定义指向info结构体的指针 struct info *p_info; //定义结构体变量 struct info myinfo; //初始化指针 p_info = &myinfo;字符串指针
1、指向字符数组的指针
2、指向字符串常量的指针
指针数组
指向指针的指针
又叫做“指针型指针”#include <stdio.h> #include <stdlib.h> int main() { int *q,**p; int x = 1; q = &x; p = &q; printf("q = %x ",q); printf("*q = %d ",*q); printf("p = %x ",p); printf("*p = %x ",*p); printf("**p = %d",**p); return 0; }
用指针型指针输出数组元素:
#include <stdio.h> #include <stdlib.h> int main() { int a[5] = {1,2,3,4,5}; int *num[5] = {&a[0],&a[1],&a[2],&a[3],&a[4]}; int **p,i; p =num; for(i = 0;i < 5;i++) { printf("%d ",**p); //输出:1 2 3 4 5 p++; } return 0; }习题
1、 请指出以下程序段中的错误。
程序中的错误有:
(1)p=i:类型不匹配。
(2)q=*p:q 是指针,*p 是指针 p 指向变量的值。
(3)t='b':t 是指针类型。解释:指针变量是一种存放地址的特殊变量,其特殊性表现在类型和值上。指针变量的
类型是指针变量所指向的变量的类型,而不是自身的类型。指针变量赋值应该是地址值。正确程序应为:
main () { int i,j,*p,*q; char ch1,ch2,*t,*s; i=3; p=&i; j=*p/2+10; q=p; ch1='a'; s=&ch1;l *s='c'; *t='b'; ch2=*t; }2、以下程序的输出结果是什么?
main() { char *point[]={"one","two","three","four"}; while(*point[2]!='