C语言程序设计 指针变量赋值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序设计 指针变量赋值相关的知识,希望对你有一定的参考价值。

对于给指针赋值可以 int *p;int a[10];
p=a;
也可以是 int a[ 10] ,*p=a;
但是如果是这样 int *p ,a[10];
*p=a;就不行了
怎么int a[ 10] ,*p=a;就可以了呢?有点糊涂。
int a[ 10] ,*p=a;
表示的是 定义一个指针变量 p 把a的首地址给p么?

C语言 形式逻辑不成立(C语言的缺点!)。

int a[ 10] ,*p=a; 是声明,声明中 *p=a 表示p是指针,初始化把a数组的首地址赋给它。

*p=a;是语句,不是声明,形式一样,就不行了!
因为 语句 里,*p 表示p 指向的 值。

同样的形式,意思不同,形式逻辑不成立,(C语言的缺点!)。
初学者,人人遇到这个问题!
参考技术A 要将指针指向的值赋值到变量上, 需要将指针指向的值取出,然后执行赋值操作。
对指针取值需要使用取值运算符*,这个符号和乘相同,但功能不同。用于取值时,*为单目运算,与后续的指针相结合,实现取指针指向的值的效果。
比如
int a = 10;
int b;
int *p = &a;
这时p指向变量a的地址,指向的值为10,要将其赋值给b,需要
b = *p;
参考技术B int *p;中的“*”说明定义的一个变量p是指针类型的。
而 *p中的“*”是一种操作,是取值操作。即去指针指向的那个值。
*p可看作是一个整形的变量。a则可以看成是一个指针。
参考技术C * 称为指针运算符 主要有如下两种用法:
* 出现在数据定义语句中时,*在数据类型与变量之间,是一个二元运算符,用来定义指针变量。例如:int * ip;
int a[ 10] ,*p=a;表示的也是定义一个指针变量 p 同时把a的首地址给p
* 出现在指针变量表达式左边时,是一个一元运算符,表示访问指针所指对象的内容。例如: int a =10; * p=a ; printf("%d",*p) 表示输出 a 的值10
参考技术D int *p; 代表定义指针变量

*p在语句中使用代表取值

但是如果是这样 int *p ,a[10];
*p=a;就不行了
正确的应该是 p = a;

c语言指针变量?

本程序将字符读入数组s中,直到用户键入ENTER键为止,然后显示读入的串。(指针变量访问字符数组)

参考技术A #include <stdio.h>
#include <malloc.h>
int main(void)

char *s, *t, *ch;
int n = 0, i;
s = t = NULL;
ch = (char *)malloc(sizeof(char));
while (scanf("%c", ch))

if (*ch == 10)
break;
n ++;
t = s;
s = (char *)malloc(sizeof(char) * n);
if (t != NULL)

for (i = 0; i < n - 1; i ++)
s[i] = t[i];
free(t);
t = NULL;

s[n - 1] = *ch;

puts(s);
free(ch);
free(s);
return 0;
参考技术B 先定义一个足够大的字符数组,定义一个指向字符的指针,并初始化指向组字符数首字节。将字符读入数组s中,直到用户键入回车符为止,然后将字符数组中的回车符改为串结束符,再用输出语句输出字符数组显示读入的串。 参考技术C

#include <stdio.h>


int main()

    char s[1000],*p;

    for(p=s;(*p=getchar())!='\\n';p++)

        putchar(*p);

    return 0;

本回答被提问者和网友采纳

以上是关于C语言程序设计 指针变量赋值的主要内容,如果未能解决你的问题,请参考以下文章

C语言同类型指针赋值简单问题

在C语言编程中,为啥要将指针变量在开始的时候赋值为NULL?

c语言指针变量?

c语言赋值是啥?

求解答C语言“指针赋值”?

C语言指针赋值?