『壹』 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);
}