- 在程序中如何声明指针,指针必须定义哪些内容或赋予哪些意义?
- *c+b与c+&b意义有何相同与不同之处?请讨论.
- 下面的程序有什么错误?
01 #include
02 03 int main(void) 04 { 05 int*x,y; 06 int input; 07 08 x=&input; 09 y=&input; 10 printf(“x=%x\n”,x); 11 printf(“y=%x\n”,y); 12 13 return 0; 14 } - 下列程序代码在编译过程中有两个错误,指出这两个错误并修改程序代码,使其能正确执行.
01 #include
02 int main(void) 03 { 04 int iNumber=10; 05 int*pinIndex=0; 06 int*piGet_Number=iNumber; 07 int*piDollar=(int*)malllc(sizeof(int)); 08 piDollar=10; 09 if(piIndex!=0) 10 { 11 printf(“%s%#x\n”,”变量所指地址为”,piIndex); 12 printf(“%s%d\n”,”iIndex变量值为”,*piIndex); 13 } 14 printf(“%s%#x\n”,”piGet_Number变量怕指地址为”,piGet_Number); 15 printf(“%s%d\n”,”piGet_Numbet变量值为”,*piGet_Number); 16 printf(“%s%#\n”,”piDollar变量所指地址为”,piDollar); 17 printf(“%s%d\n”,”piDollar变量值为”,*piDollar); 18 return 0; 19 } - 说明取址运算符“&”与取值运算符“*”有什么作用?
- 以下这个程序是个初学指针的学生写的程序,他希望通过操作指针q来改变变量p的值,原先想要p的值为2,但却打印出了奇怪的结果.请问错误出在哪里?
01 #include
02 03 int main(void) 04 { 05 int p=1,*q; 06 07 q=&p; 08 *q++; 09 printf(“p=%d\n”,p); 10 printf(“*q=%d\n,*q”); 11 12 return 0; 13 } - 当声明数组与指针取得内存变量数据时,再都有何差异?
- 双得指针的主要用途是什么?
- 说明动态分配数组的重点。
- 下列程序代码为圆半径的设置,写聘书第07和08行的打印结果?
01 #include
02 int main() 03 { 04 int iRadius=10; 05 int*piRadius=&iRadius; 06 07 printf(“*piRadius值为%d\n’m*piRadius); 08 printf(“piRadius[0]值为%d\n”,piRadius[0]); 09 return 0; 10 } - 如何在C中包括绝对路径文件?
- 下面这个程序有无错误?如果有错,如何改正?
01 #include
02 03 int main(void) 04 { 05 char p[80]; 06 07 p=”123456789” 08 09 printf(“%s”,p); 10 retrun 0; 11 } - 如何使用一个循环列出二维数组中所有的元素值?试写出程序代码。
- 请看下列程序代码,它的写法正确吗? nt al,*pl=0;//声明变量al及指针变量p1,并且将指针变量p1的初始值设置为0
- 指针的加法运算和一般变量加法运算有什么不同?
C语言指针测试题(2)
声明指针时,必须定义指针属于何种数据类型,在数据类型后加上“*”符号,再赋予指针名称。
*c=b表示变量b的值存储至c所指向的内存位置,如果改变了c内存位置的值,对b的值不会有影响。
第05行有错误,这是个经常发生的错误,原程序将只声明x为整数指针,而将y声明为整数变量,应将第05行修改如下:
int *x,*y;
在第06行iNumber前加:“&”取址运算符,因为piGet_Number是一个指针,必须指派实体变量的地址。第08行的piDollar前需加上“*”取值运算符,才能将数据存到piDollar指针的地址里。
取址运算符“&”是用来取得变量存储数据的地址值,取值运算符“*”则是取得指针变量值所代表地址的数据值。
“++”运算符的优先权高于“*”运算符,原程序是先移动q的内存地址,再取值的这个程序要按照题意改变p的值,将弟08行修改如下
(*q)++
数组适合声明固定区块的变量数据,可以防止读取或写入时,超出设置数据范围的内存:指针不适合一定范围内的内存读取,因为有可能地址值已超出设置范围,而造成读取或是写入错误的情形发生。
函数指针与一般指针一样,主要用途是存储地址值,但在执行前必须先将函数指针指向正确的函数起始地址。
函数指针未指向函数地址,这样的错误轻则产生错误信息,重则可能导致死机,这是因为当函数指针未指派函数地址时,函数指针的内容值就是个不确定的数值,如果就此执行该数值所代表的地址,系统将无法判断该地址是什么
第07行为10;第08行为10。
使用URLConnection即可。
固定长度的字符数组,不能直接指定字符串常量,如果要在程序中直接使用字符串常量指定字符串,就必须使用字符指针,程序第05行应个性如下:
char *p;
即使是二维数组,在内存中也是线性排列,只要先取得第一个元素的内存地址,即可使用一个循环来取出数组中所有的元素值,程序代码实例如下所示L
#intclude
int main()
{
int *ptr;
int arr[3][3]={{1,2,3,},{4,5,6,},{7,8,9}};
int i;
ptr=*arr;
for(i=0;i<9;i++)
printf(“&d”,*(ptr+i));
return 0;
}
不正确。
最大的差异在于当执行指针加法运算后,会将目前指针变量所指向的内存地址“向后”移动。
自我评价 答对0--2题 答对3--4题 答对5--6题 答对7--8题 答对9--10题
