求解答C语言“指针赋值”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解答C语言“指针赋值”?相关的知识,希望对你有一定的参考价值。
(1) int a =5; int *p=&a;
(2)int a =5; int *p; *p=&a
为什么第一种方法可以,第二种方式就报错说不能把“int*”换成“int”型呢?
而int *p; *p=&a,是定义完后再赋值,这里试图把一个地址赋值给指针指向的变量,这样就会报错int *型不能赋值给int型。应该把地址直接赋值给指针,即p=&a
int *p意义是定义一个指针,而定义完后*p的意义是p指针指向内存空间的内容 参考技术A int* p是定义一个指针p。
int *p和 *p可不是一个意思哟
*p = &a是不行的 *p是p指针存的数据,而&a是指针类型。
(2)int a =5; int *p; *p=a;这样是可以的 参考技术B 第一种的int *p=&a相当于 int *p;p=&a;将a的地址赋给p;
而第二种 *p=&a,*p是p地址所指向的值,&a是地址,不能直接将地址赋给非指针变量 参考技术C 第一种可以使因为 对变量p声明并赋值(初始化),声明为int *,值为 &a,没错
第二种 声明 int *p时未赋值, 而你赋值时 p是指针int *,则*p则为int , &a为int *,所以报错 参考技术D *p为int类型,&a为地址(int* 类型);
*p=&a该为 p=&a;
求解答 c语言
实验一:
#include <stdio.h>int main()
int num[2], i;
for (i = 0; i < 2; i ++)
scanf("%d", &num[i]);
printf("%d\\n", abs(num[0] - num[1]));
return 0;
实验二:
#include <math.h>float factorial(long n)
int i;
float result = 1.0;
for (i = 1; i < n; i ++)
result *= i;
return result;
float solve(long x)
int i;
float sum = 0.0;
if (x != 0)
for (i = 0; i < 20; i ++)
sum += pow(x, i) / factorial(i);
else
printf("Error: x cannot be 0!\\n");
return sum;
实验三:
int main()char str[128], anothstr[128];
int i, ucases = 0;
gets(str);
for (i = 0; i < strlen(str); i ++)
anothstr[strlen(str) - i - 1] = str[i];
for (i = 0; i < strlen(str); i ++)
if (str[i] >= 'A' && str[i] <= 'Z')
ucases ++;
printf("%s\\n", anothstr);
printf("%d\\n", ucases);
return 0;
参考技术A 这些基础的c语言题百度上都能搜到的,有现成的答案
以上是关于求解答C语言“指针赋值”?的主要内容,如果未能解决你的问题,请参考以下文章
C 语言指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )