‘壹’ c语言指针的赋值问题
指针在用要注意初始化,例如:
int *p;
p为指针,地址是未知的,如果直接赋值
*p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。
可以int *p=&a;
或者int *p;
p=&a;
然后再对p进行操作
有错。
注意大小写,还有
int a=9;
int *p;
p=&a;//这个是指针指向a
*p=8;
这样就对了。
(1)c语言指针定义字符串怎么赋值扩展阅读:
指针的赋值
int *p;
int a;
int b[1];
p = &a;
p = b;
指针的赋值,“=”的左操作数能够是*p,也能够是p。
当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;
当“=”的左操作数是p时,改变的是p所指向的地址。
数组的变量名b表示该数组的首地址,因此p=b;也是正确的
同类型的指针赋值:
int val1 = 18,val2 = 19;
int *p1,*p2;
p1 = &val1;
p2 = &val2;
p1 = p2; //注意啦,p1指向了val2,而没有指向val1
备注:字符串与指针的初始化和赋值
初始化:
char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址,而并非传递字符串的值。由于,在C语言里面,没有总体处理一个字符串的机制
赋值:
cp = "abcdefg";
*cp=”abcdefg” ;//错误!字符串常量传递的是它的首地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。
‘贰’ C语言如何把指针指向的值赋值到变量上。。。
str1是个常量指针,不能对他进行赋值操作, 用也应该写成p=str1; 另外初始化的话一般是char* p=NULL; 或者char* p; p=NULL;
‘叁’ C语言怎样给字符数组赋值
1、单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值。
例子:
char a[10];
char ch='a';
for( i=0;i<10;i++ )
a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值
char *p;
for( p=a; p<a+10; p++ )
*p=ch++; //通过指针对数组相应元素赋
2、字符串赋值,可使用string.h头文件中的字符串操作函数进行赋值。
例子:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
(3)c语言指针定义字符串怎么赋值扩展阅读:
C语言给字符数组赋值的优点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
‘肆’ 请问C语言 char类型的指针要怎么赋值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *source = malloc(20*sizeof(char);
printf("Please input source \n");
scanf("%s",source);//f方法三
printf("%s\n",source);
char *temp = "my input source"
sprintf(source,"%s",temp);//方法一
printf("%s\n",source);
strcpy(source,temp);//方法二
printf("%s\n",source);
return 0 ;
}
指针是无法存放字符串的,只有指针指向的那块空间才能存放字符串,所以我第一句话给它开辟了20个空间,这样就可以给指针指向的那块空间赋值了,谢谢
另外给你一个建议 char *a = NULL,*b =NULL,*c =NULL;这样的写法是不规范的,很容易出错。标准形式应该是char *a= NULL;
char *b = NULL;
char *c = NULL;
‘伍’ C语言指针怎么赋值呢
要改p–>a的值,和在这个函数里面是一样的
直接
p–>a=要赋值的值
这样就可以了
唯一需要注意的就是要赋值的是结构体指针还是结构体变量,如果不是指针那就要改成点了
p.a这样
‘陆’ C字符串赋值
字符串不能这样赋值
*str其实和str[0]是等效的
另外str是数组,所以这个指针是常量,所以也不能使用类似str="asdf";的方式进行赋值。
你可以用<string.h>中的strcpy()函数,该函数会自动添加\0
#include<stdio.h>
main()
{
char str[40];
strcpy(str,"aldkjflakdsjfalkfj");
puts(str);
}