❶ c語言 結構體成員變數為指針時如何賦值
1、既然是指針變數,那麼將一個變數的地址值賦值給該指針變數即可!
2、至於具體講一個地址值賦值給指針有兩種方法:一種就是用取地址符&來操作內嵌變數,另一種就是通過採用malloc函數動態開辟內存並將內存地址值賦值給指針變數。
3、舉例說明:定義int型指針變數int
*
p;和int型變數int
a;那麼將a的地址值賦值給p:p=&a;另一種方式是動態方式:p
=
(int*)malloc(size(int));
❷ 在C語言中.結構體變數之間可以相互賦值嗎
結構體變數直接賦值,就是其本身內存地址空間,按照地址分布直接賦值。
所以兩個一樣的結構變數可以直接賦值。
但是如果結構成員中有指針,且指針指向的地址大小不一樣,是不能直接賦值的。
❸ C語言結構體數組成員怎麼賦值
intmain(void){
structstudentsbao={};
printf("%d,%s ",bao.id,bao.name);//輸出是4224528,空(應該是null)
//structstudentsbao={3,"123"};可以。第一種賦值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s ",bao.id,bao.name);
//bao.name="bao";錯誤「stray'351'inprogram」其他是亂碼,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s ",bao.id,bao.name);
/*這樣可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error""
//scanf("%s",bao.name);//可以,
//printf("%d,%s ",bao.id,bao.name);
//所以scanf那一類函數都可以。
//還有就是memcpy函數也是可以的
return0;
}
(3)c語言結構成員賦值擴展閱讀
C語言結構體數組的直接賦值及數組的長度計算:
#include<stdio.h>
//自定義一個字元串的結構體,包含字元串和字元串長度兩個變數
typedefstructStr{
charch[100];
intlength;//char數組(字元串)的長度
}myStr;
//剛開始聲明變數時每個變數的字元串長度length都為0
//這里以長度為10的數組為例,數組長度是1000
//對第0個到第9個結構體數組的長度同時賦值為0
myStrmyStr1[10]={
[0...9]={
.length=0,
}
};
intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",myStr1[i].length);
}
return0;
}